java stream根据某个属性去重
时间: 2023-06-06 18:05:24 浏览: 741
如何实现java8 list按照元素的某个字段去重
5星 · 资源好评率100%
可以使用Java 8 Stream的distinct()方法对某个属性进行去重。比如,对于一个包含对象的流,可以使用以下代码对属性name进行去重:
list.stream().filter(distinctByKey(Employee::getName)).collect(Collectors.toList());
其中distinctByKey()方法可以自己实现,代码如下:
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;
}
阅读全文