強烈推薦一個大神的人工智能的教程: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));