例子中list为去重的集合
List<基本类型>去重
方法一:
HashSet set = new HashSet(list);//将list中的数据全部存入set集合中,HashSet有自动去重的功能
list.clear();//清除list中的数据
list.addAll(set); //将去重过的数据重新加入list中
方法二:
List<String> list2 = new ArrayList<String>();
for(int i=0;i<list.size();i++){
//判断list中的元素是否包含在list2中,不包含就加进list2中,下个同样的元素就不会进入if中,最好list2中就是已经去重的数据
if(!list2.contains(list.get(i))){
list2.add(list.get(i));
}
}
方法三
list=list.stream().distinct().collect(Collectors.toList());
List<实体类>去重
按照所有字段去重
//实体类中全部对应字段的值完全相同才会去重
list.stream().distinct().collect(Collectors.toList());
按照指定字段去重
//比如根据姓名、年龄、性别去重
list.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getName() + "#" + o.getAge() + "#" + o.getSex()))
), ArrayList::new));