List集合对象去重及按属性去重的8种方法-java基础总结系列第六篇

一、集合元素整体去重 使用Set去重:先将List数据放入Set,因为Set具有去重的功能,再将Set转为List。但这种方法会改变原有的List元素顺序。使用Stream去重:使用stream方法将集合转换成流,然后利用distinct方法进行去重,最后将Stream流collect收集为List。利用Set的add方法去重:遍历List,利用set.add方法,如...
List集合对象去重及按属性去重的8种方法-java基础总结系列第六篇
List集合对象去重及按属性去重的8种方法:
一、集合元素整体去重
使用Set去重:
先将List数据放入Set,因为Set具有去重的功能,再将Set转为List。但这种方法会改变原有的List元素顺序。使用Stream去重:
使用stream方法将集合转换成流,然后利用distinct方法进行去重,最后将Stream流collect收集为List。利用Set的add方法去重:
遍历List,利用set.add方法,如果T元素已经存在集合中,就返回false。根据这个返回值判断元素是否重复,如果不重复就放入一个新的List中。使用List的contains方法去重:
遍历List,在向新的List添加数据的时候判断这个数据是否已经存在于新List中,如果存在就不添加。二、按照集合元素对象属性去重
使用TreeSet和Comparator接口:
为TreeSet实现Comparator接口,比较指定属性,从而实现按属性去重。使用Map进行去重:
创建一个Map,将需要依据的属性作为键,对象本身作为值。由于Map的键是唯一的,因此可以实现按属性去重。之后可以从Map中提取值来构建去重后的List。使用Java 8的Collectors.toMap:
利用Collectors.toMap收集器,将List转换为Map,同样以需要依据的属性作为键,对象本身作为值。这种方法简洁且高效。组合多种属性进行去重:
如果需要按多个属性进行去重,可以创建一个包含这些属性的复合键,然后将复合键作为Map的键。或者在Comparator中实现多个属性的比较逻辑。注意:上述方法中,使用Set和Stream去重的方法适用于对List中的简单类型或已正确实现equals和hashCode方法的对象进行去重。对于按属性去重,通常需要对象具有相应的getter方法以访问属性,或者通过其他方式获取属性值进行比较。
2025-03-31
mengvlog 阅读 8 次 更新于 2025-07-19 06:49:35 我来答关注问题0
  • List集合对象去重及按属性去重的8种方法:一、集合元素整体去重 使用Set去重:先将List数据放入Set,因为Set具有去重的功能,再将Set转为List。但这种方法会改变原有的List元素顺序。使用Stream去重:使用stream方法将集合转换成流,然后利用distinct方法进行去重,最后将Stream流collect收集为List。利用Set的add...

  •  文暄生活科普 List集合对象去重及按属性去重的8种方法-java基础总结系列第六篇

    第一种方法:先将List数据放入Set,因为Set数据结构本身具有去重的功能,再将Set转为List之后就是去重之后的结果。这种方法在去重之后会改变原有的List元素顺序,因为HashSet本身是无序的,而TreeSet排序也不是List种元素的原有顺序。第二种方法:使用stream方法将集合转换成流,然后distinct去重,最后将Str...

  •  文暄生活科普 用Stream流操作List集合去除重复对象的重复属性

    日常开发中,处理数据库查询结果时,可能需要去除重复对象的重复属性。例如,统计每个userName的出现次数,通过Stream的filter方法筛选出出现次数大于1的值,并将这些值放入一个新的list集合中。接下来,遍历这个集合,将所有userName与重复userName相等的对象从原始集合中移除。最后,将处理过后的对象重新添加回...

  •  翡希信息咨询 C# List集合Linq取交集、并集、差集、去重

    差集: 使用Except方法。它会返回在第一个列表中但不在第二个列表中的元素集合。 示例代码:var except = list1.Except.ToList;去重: 使用Distinct方法:适用于值类型或实现了正确哈希和相等性比较的对象。它会根据对象的默认哈希和相等性规则去重。 示例代码:var distinctList = users.Distinct.To...

  •  文暄生活科普 java List怎么分组去重

    true;Sh sh = (Sh) obj;if (sh.getHm() == this.getHm()) { // 比较hm属性是否相等 return true;} return false;} 这样,当你将List转换为Set后,Set中的Sh对象就会根据自定义的equals方法进行去重,确保每个组内没有重复项。最后,再将Set转换回List,你就得到了分组且去重后的结果。

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部