强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan
原文地址:https://blog.csdn.net/zh15732621679/article/details/80483617 java
出于项目须要,有一个list,实体包含多个字段,当其中两个字段相同均相同时,就认为list中的两条记录是同样的,原本想经过分组实现,java8的分组只提供根据一个字段分组,只好另寻他路,java8有一个collectingAndThen能够根据多个字段去重,由于咱们的需求是能够去重以后操做,所以采用这种方式。
classEntities.stream().collect(Collectors.groupingBy(ClassEntity::getGrade));
- java8去重(根据年级和专业,当年级和专业都相同的状况下看作是重复数据)
List<ClassEntity> distinctClass = classEntities.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getProfessionId() + ";" + o.getGrade()))), ArrayList::new));
- 经过hashSet去重(如将classNames去重):该种去重是bean彻底相同的时候算重复数据
List<String> classNameList = new ArrayList(new HashSet(classNames));