java - 识别列表中的重复项

标签 java collections

我有一个整数类型的列表,例如:

[1, 1, 2, 3, 3, 3]

我想要一个返回所有重复项的方法,例如:

[1, 3]

最好的方法是什么?

最佳答案

Setadd 方法返回一个值是否已经存在的 boolean 值(如果不存在则返回true,如果已经存在则返回false,参见Set documentation)。

所以只需遍历所有值:

public Set<Integer> findDuplicates(List<Integer> listContainingDuplicates) { 
    final Set<Integer> setToReturn = new HashSet<>(); 
    final Set<Integer> set1 = new HashSet<>();
         
    for (Integer yourInt : listContainingDuplicates) {
        if (!set1.add(yourInt)) {
            setToReturn.add(yourInt);
        }
    }
    return setToReturn;
}

关于java - 识别列表中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414667/

相关文章:

java - 有效地找到随机序列的中值

java - 正确处理 Intents 以修复 ActivityNotFoundException

java - 为什么 LinkedCaseInsensitiveMap 同时使用 LinkedHashMap 和 HashMap?

python - 为什么 defaultdict 构造函数采用函数而不是常量

Laravel,如何将集合对象转换为构建器对象

scala - 在 Scala 中查找函数应用值

java - 如何从 JMS 消息组取消注册而不杀死整个消费者 (ActiveMQ)

java - 带有图像和文本的 AsyncTask

java - 在项目中导入jar

java - 标准 Kotlin 库中有哪些 Java 8 Stream.collect 等效项?