Java通过stream流去重
时间: 2023-10-15 18:06:03 浏览: 90
可以使用Java 8中的Stream API实现去重。具体步骤如下:
1. 将需要去重的集合转换为Stream流。
2. 使用distinct()方法去重,该方法会返回一个去重后的新Stream流。
3. 将去重后的Stream流转换为集合。
示例代码如下:
```java
List<String> list = Arrays.asList("java", "python", "java", "c++", "python");
List<String> distinctList = list.stream().distinct().collect(Collectors.toList());
System.out.println(distinctList);
```
输出结果为:[java, python, c++]
在上述代码中,list集合中包含重复的元素,通过调用list.stream()方法将其转换为Stream流,再调用distinct()方法去重,最后调用collect(Collectors.toList())方法将去重后的Stream流转换为List集合。
相关问题
java通过stream流去重
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;
}
```
java 8stream流去重
可以使用 distinct() 方法来对 Java 8 Stream 流进行去重操作。例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 2, 4, 3, 5);
List<Integer> distinctNumbers = numbers.stream().distinct().collect(Collectors.toList());
这样就可以得到一个去重后的 List,其中包含了原始 List 中的所有不同元素。
阅读全文