是的,一个微不足道的问题,但我没有找到重复的问题。目前,来自这个集合(ArrayList):
Java
C#
Java
Python
我必须得到这个:(也就是说,每个单词都会遇到重复的次数)
Java 2
C# 1
Java 2
Python 1
目前我正在使用 Map,但它会删除重复项,这就是我得到的结果。
Java 2
C# 1
Python 1
这是我的代码:
Map<String, Integer> map = new HashMap<>();
for (String temp : array) {
Integer count = map.get(temp);
if (count != null){
map.put(temp, count + 1);
}
else {
map.put(temp, 1);
}
}
我有一个想法,将数据写入另一个列表,通过这个列表,将“父”列表的每个元素与新列表的所有元素进行比较。类似的东西:
List<String> resultList = new ArrayList<>();
List<String> mainList = new ArrayList<>();
for (int i = 0; i < arrayList.size(); i++) {
mainList.add(i,arrayList.get(i));
}
for (int i = 0; i < mainList.size(); i++) {
int x = 1;
for (String anArray : arrayList) {
if (mainList.get(i).equals(anArray)) {
resultList.add(i,mainList.get(i) + " "+ x++);
}
}
}
resultList.forEach(System.out::println);
它按我的需要工作,但在遇到重复项时也会创建一个额外的行。
Java 2
C# 1
Java 2
Python 1
Java 1
Java 1
在使用 List 的实现中,我遇到一个问题,它会将当前元素增加 1,但同时会创建另一个元素。
伙计们,如果有任何想法或线索可以指导我解决我的问题,我会很高兴!
UPD:这个问题的所有答案都是神圣的。感谢你们!在不冒犯他人的情况下选择正确的答案让我感到尴尬。
最佳答案
您可以使用 Collections.frequency
在迭代列表以打印列表中每个单词的出现次数时:
public static void main(String[] args) {
List<String> list = Arrays.asList("Java", "C#", "Java", "Python");
list.forEach( s -> System.out.println(s + " " + Collections.frequency(list, s)));
}
输出:
Java 2
C# 1
Java 2
Python 1
关于java - 如何找到重复的行并在它们前面显示重复的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52121032/