/*
* @description:使用distinctByKey方法根据对象的属性进行去重
* @author: zs
* @date: 2023/12/18 14:29
* @param: [keyExtractor]
* @return: java.util.function.Predicate<T>
**/
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor){
Map<Object,Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t),Boolean.TRUE) == null;
}
public static void main(String[] args) {
List<User> users = userList.stream().filter(distinctByKey((s -> s.getUserName()))).collect(Collectors.toList());
List<String> repeatList = testList.stream().filter(DeduplicationUtil.distinctNotByKey(Student::getStuName)).map(Student::getStuName).collect(Collectors.toList());
}
List去重-使用distinctByKey方法根据对象的属性进行去重
于 2023-12-18 16:17:58 首次发布
文章介绍了如何在Java中使用`distinctByKey`方法,配合Function和keyExtractor对对象集合进行基于特定属性的去重,展示了在用户列表和学生姓名列表中的实际应用。
1027

被折叠的 条评论
为什么被折叠?



