Java通过stream流去重
时间: 2023-10-15 11:06:03 浏览: 93
可以使用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用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` 流去除重复元素。
阅读全文