网站首页 网站建设 IT知识 IT知识教程 如何实现java8 list按照元素的某个字段去重

如何实现java8 list按照元素的某个字段去重

2021-05-19 21:17:18

list 按照元素的某个字段去重

@Data@AllArgsConstructor@NoArgsConstructorpublic class Student {private Integer age;private String name;}

测试数据

List<Student> studentList = Lists.newArrayList();studentList.add(new Student(28, "river"));studentList.add(new Student(12, "lucy"));studentList.add(new Student(33, "frank"));studentList.add(new Student(33, "lucy"));

java8 通过tree set 去重

List<Student> studentDistinctList = studentList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->new TreeSet<>(Comparator.comparing(t -> t.getName()))),ArrayList::new));System.out.println(new Gson().toJson(studentDistinctList));

扩展distinct 方法去重

List<Student> studentDistinct2List = studentList.stream().filter(StreamUtil.distinctByKey(t->t.getName())).collect(Collectors.toList());System.out.println(new Gson().toJson(studentDistinct2List));

工具类

public class StreamUtil {/*** https://stackoverflow.com/questions/23699371/java-8-distinct-by-property* @param keyExtractor* @param <T>* @return*/public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {Set<Object> seen = ConcurrentHashMap.newKeySet();return t -> seen.add(keyExtractor.apply(t));}}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。 如涉及版权问题,请提交至online#300.cn邮箱联系删除。

以上产品还未完全满足我的所有需求,在下方提交我的专属需求
我的专属需求:
*手机号:
*验证码:
img
咨询报价
现在咨询
img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP