java - 在数组列表中查找重复值并打印重复值

标签 java arraylist

我有一个名称数组列表,我想查看重复值(如果存在)并打印该值。问题是我对是否使用 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/

相关文章:

java - 我想知道如何在单击按钮时在 Java AWT 中从一个 XML 页面导航到另一个 XML 页面

java - 清除 Runnable 对象的 ArrayList 时会发生什么?

java - 访客模式的使用

java - 使用 java Swing 单击“下一步”按钮时图像不会显示在 JLabel 上

java - Java如何快速比较两个集合在Java中是否完全相同?

java - 如何使用Java流获取存储在类的对象的Arraylist中的String和ArrayList

java - 为什么我必须同步线程的 ArrayList?

java - 使用 Set 从 arrayList 中删除重复列表

java - 使用来自现有列表的 HashMap 的值创建一个新列表

java - 在Java中增加ArrayList中ArrayList的大小