1、在开发工作中,我们有时需要去判断List集合中是否含有重复的元素
2、我们不需要找出重复的元素,我们只需要返回一个 Boolean 类型就可以了
3、如果使用循环遍历的方式,将会消耗大量的性能
4、我们知道,Set 中存放的都是不重复的数据,所以只需要将 List 集合转化为 Set 集合,再进行比较即可
1、常规操作
代码如下:
public class Test {
public static void main(String[] args) {
// 定义一个 list 集合
List<String> list = new ArrayList<>();
// 往 list 里面添加数据
list.add("a");
list.add("b");
list.add("a");
list.add("c");
// 将 list 转化为 set
HashSet<String> set = new HashSet<>(list);
// 比较 list 与 set 的长度
Boolean result = set.size() == list.size();
// 输出比较结果
System.out.println(result);
}
}
运行结果当然是:false
2、使用 stream 方式
- 使用 distinct
public static void main(String[] args) {
// 定义一个 list 集合
List<String> list = new ArrayList<>();
// 往 list 里面添加数据
list.add("a");
list.add("b");
list.add("a");
list.add("c");
// 使用 distinct 去重
long count = list.stream().distinct().count();
boolean result = count == list.size();
// 输出比较结果
System.out.println(result);
}
- 使用 Collectors.toSet()
public static void main(String[] args) {
// 定义一个 list 集合
List<String> list = new ArrayList<>();
// 往 list 里面添加数据
list.add("a");
list.add("b");
list.add("a");
list.add("c");
// 使用 Collectors.toSet() 转换
Set<String> collect = list.stream().collect(Collectors.toSet());
boolean result = collect.size() == list.size();
// 输出比较结果
System.out.println(result);
}
如您在阅读中发现不足,欢迎留言!!!