java 8stream流去重
时间: 2023-05-14 17:04:22 浏览: 85
可以使用 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 中的所有不同元素。
相关问题
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用stream流去重
在 Java 中使用 `Stream` 流去重可以通过 `distinct()` 方法来实现。以下是一个简单的示例:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
List<Integer> distinctNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distinctNumbers); // 输出: [1, 2, 3, 4, 5]
}
}
```
在上面的示例中,我们创建了一个包含重复元素的整数列表 `numbers`。然后使用 `stream()` 方法将其转换为流,然后使用 `distinct()` 方法去除重复的元素,最后使用 `collect(Collectors.toList())` 方法将结果收集为一个新的列表 `distinctNumbers` 并输出。
这样就能够通过 `Stream` 流去除重复元素。