/**
* 根据属性中某一个字段去重
* @param keyExtractor
* @param <T>
* @return
*/
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> map = new ConcurrentHashMap<>();
return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
举个栗子:
result.stream().filter(distinctByKey(e -> e.getUnitId())).collect(Collectors.toList());