如何实现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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下