由于distinct()不提供按照属性对对象列表进行去重的直接实现,要想按对象属性去重无法实现。
解决方案
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return object -> seen.putIfAbsent(keyExtractor.apply(object), Boolean.TRUE) == null;
}
res = res.stream().filter(x -> !userName.equals(x.getName()))
.filter(distinctByKey(memberDto ::getName)).collect(Collectors.toList());
即可按照对象属性对列表去重