我有一个名称数组列表,我想查看重复值(如果存在)并打印该值。问题是我对是否使用 contains 方法感到困惑,下面的代码不起作用。
ArrayList<String> list=new ArrayList();
list.add("Sagio Mane");
list.add("Karius");
list.add("Mo Salah");
list.add("Firmino");
list.add("Lovren");
list.add("Steven Gerrard");
list.add("Karius");
list.add("Mo Salah");
for(int i =0; i < list.size(); i++) {
if list.contains(list.get(i)) {
System.out.println(list.get(i)+" is duplicated")
}
}
这应该打印“karius is duplicated”
最佳答案
如果您使用的是 Java 8+,您可以使用:
//Get frequencies of each element
Map<String, Long> frequencies = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
//then filter only the inputs which have frequency great than 1
frequencies.entrySet().stream()
.filter(entry -> entry.getValue() > 1)
.forEach(entry -> System.out.println(entry.getKey()));
输出
Karius
Mo Salah
关于java - 在数组列表中查找重复值并打印重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50549993/