zoukankan      html  css  js  c++  java
  • java8 list中根据对象多属性去重

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan
    原文地址:https://blog.csdn.net/zh15732621679/article/details/80483617

    项目需求描述

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

    分组及去重

    • 分组
    classEntities.stream().collect(Collectors.groupingBy(ClassEntity::getGrade));
    
    • 1
    • java8去重(根据年级和专业,当年级和专业都相同的情况下看做是重复数据)
    List<ClassEntity> distinctClass = classEntities.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getProfessionId() + ";" + o.getGrade()))), ArrayList::new));
    
    • 1
    • 通过hashSet去重(如将classNames去重):该种去重是bean完全相同的时候算重复数据
    List<String> classNameList = new ArrayList(new HashSet(classNames));
    
    • 1
    • 2
                                    </div>
  • 相关阅读:
    HDU 3068 Manacher
    HDU 6188最小费用流
    Codeforces Round #442 (Div. 2) Danil and a Part-time Job
    并查集
    HDU 5988最小网络流(浮点数)
    HOJ
    HOJ
    POJ
    POJ
    关于async
  • 原文地址:https://www.cnblogs.com/java-hardly-road/p/11395976.html
Copyright © 2011-2022 走看看