如何实现java8 list按照元素的某个字段去重
list按照元素的某个字段去重
@Data
@AllArgsConstructor
@NoArgsConstructor
publicclassStudent{
privateIntegerage;
privateStringname;
}
测试数据
ListstudentList=Lists.newArrayList(); studentList.add(newStudent(28,"river")); studentList.add(newStudent(12,"lucy")); studentList.add(newStudent(33,"frank")); studentList.add(newStudent(33,"lucy"));
java8通过treeset去重
ListstudentDistinctList=studentList.stream() .collect(Collectors.collectingAndThen (Collectors.toCollection(()-> newTreeSet<>(Comparator.comparing(t->t.getName()))), ArrayList::new ) ); System.out.println(newGson().toJson(studentDistinctList));
扩展distinct方法去重
ListstudentDistinct2List=studentList.stream().filter(StreamUtil.distinctByKey(t->t.getName())) .collect(Collectors.toList()); System.out.println(newGson().toJson(studentDistinct2List));
工具类
publicclassStreamUtil{
/**
*https://stackoverflow.com/questions/23699371/java-8-distinct-by-property
*@paramkeyExtractor
*@param
*@return
*/
publicstaticPredicatedistinctByKey(FunctionkeyExtractor){
Set
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 祝女儿简短祝福语大全
11 大学新年祝福语简短创意
12 元旦适合的祝福语简短
13 朋友出远门祝福语简短
14 初六简短的祝福语
15 祝男孩生日祝福语简短
16 同事调离的祝福语简短
17 拜年红包的祝福语简短
18 妈妈生日祝福语简短励志