private List<SysUser> distinctUser(List<SysUser> sysUserList) {
if (CollectionUtils.isEmpty(sysUserList)) {
return Collections.EMPTY_LIST;
}
return sysUserList.stream().filter(user -> StringUtils.isNotEmpty(user.getNum())).collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(user -> user.getNum()))),
ArrayList::new));
}
// 定义辅助方法
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
// 去重
filterUsers = filterUsers.stream().filter(distinctByKey(user -> user.getUserId())).collect(Collectors.toList());
网友评论