当前位置: 首页 > 面试题库 >

如何检查Java 8 Streams中是否存在重复项?

杨赞
2023-03-14
问题内容

在Java 8中,检查List是否包含重复项的最佳方法是什么?

我的想法是这样的:

list.size() != list.stream().distinct().count()

这是最好的方法吗?


问题答案:

您的代码将需要遍历所有元素。如果要确保没有重复的简单方法,例如

public static <T> boolean areAllUnique(List<T> list){
    Set<T> set = new HashSet<>();

    for (T t: list){
        if (!set.add(t))
            return false;
    }

    return true;
}

会更有效,因为它可以false在找到第一个非唯一元素时立即为您提供。

此方法也可以重写为(假设非并行流和线程安全的环境),使用Stream#allMatch该方法也很短路(对于不满足所提供条件的第一个元素,立即返回false)

public static <T> boolean areAllUnique(List<T> list){
    Set<T> set = new HashSet<>();
    return list.stream().allMatch(t -> set.add(t));
}






public static <T> boolean areAllUnique(List<T> list){
    return list.stream().allMatch(new HashSet<>()::add);
}


 类似资料:
  • 我的想法是: 是最好的办法吗?

  • 我想确定C 11中是否存在一个文件 我有以下代码: 和 哪一个是正确的和惯用的?

  • 我使用POST方法提交表格。表单有一个输入字段:。 我试图检查参数是否存在: 但它不起作用

  • 问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: MySQL检查表是否存在而不会引发异常 我的项目中有一个动态mysql查询生成器,可从不同的表创建选择查询。 我需要检查当前处理表是否存在。 假设我的表是table1,table2和table3。我的代码是这样的: 我该如何进行检查(请告诉我最简单的方法)。 问题答案: 更新的mysqli版本: 原始mysql版本: 从PHP

  • 问题内容: 如果该元素是通过方法创建的,如何检查该元素是否存在? 对我不起作用。 问题答案: 对我不起作用。 您需要在元素ID之前添加: 使用香草JavaScript,不需要例如hash(),但是使用jQuery时,确实需要像基于CSS一样将哈希放入目标元素。

  • 我有一个js对象,如下所示。 我现在的代码是。 我的问题是我的代码可以有的值,但是如果在这种情况下我做了然后我就得到了现实。 如何确保我的数据具有和,以及可以具有值。 jsfiddle:https://jsfiddle.net/3jo7vx4p/ 我们衷心感谢您的帮助。