lombda 对象list 去重

2022-12-14  本文已影响0人  _浅墨_
 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());
上一篇 下一篇

猜你喜欢

热点阅读