java8特性-list集合根据多个字段去重

出于项目需要,有一个list,实体包含多个字段,当其中两个字段相同均相同时,就认为list中的两条记录是一样的,本来想通过分组实现,java8的分组只提供根据一个字段分组,只好另寻他路,java8有一个collectingAndThen可以根据多个字段去重,因为我们的需求是可以去重之后操作,因此采用这种方式。

分组及去重

分组

classEntities.stream().collect(Collectors.groupingBy(ClassEntity::getGrade));

1

java8去重(根据年级和专业,当年级和专业都相同的情况下看做是重复数据)

List distinctClass = classEntities.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getProfessionId() + ";" + o.getGrade()))), ArrayList::new));

1

通过hashSet去重(如将classNames去重):该种去重是bean完全相同的时候算重复数据

List classNameList = new ArrayList(new HashSet(classNames));

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章