java通过stream流去重
时间: 2023-11-07 10:56:44 浏览: 119
Java通过Stream流去重有几种方式。一种是使用Stream的distinct()方法来去除重复元素。另一种是使用collectingAndThen()和toCollection()方法结合使用,先将元素放入TreeSet中去除重复,再转换为ArrayList。还可以使用filter()方法根据某个属性进行去重。
示例代码如下:
```
List<User> uniqueList = list.stream().distinct().collect(Collectors.toList());
List<User> uniqueList = list.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getName))),
ArrayList::new)
);
List<User> uniqueList = list.stream().filter(
distinctByKey(User::getName)
).collect(Collectors.toList());
// Helper method
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
```
阅读全文