stream去重
时间: 2023-06-22 19:25:14 浏览: 95
要去重一个 stream,可以使用 Java 8 中的 distinct() 方法。例如:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 1, 2, 5);
list.stream()
.distinct()
.forEach(System.out::println);
```
输出结果为:
```
1
2
3
4
5
```
如果你想要自定义去重规则,可以使用 Stream 中的 filter() 方法和自定义的 Predicate。例如,如果你想要去除字符串列表中长度小于等于 3 的字符串:
```java
List<String> list = Arrays.asList("apple", "banana", "pear", "kiwi", "cat", "dog");
list.stream()
.filter(s -> s.length() > 3)
.distinct()
.forEach(System.out::println);
```
输出结果为:
```
apple
banana
```
相关问题
stream去重stream
要在Stream中去重,可以使用distinct方法。distinct方法将返回一个去除重复元素的新Stream。以下是一个示例代码:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 2, 4, 3, 5, 4, 6);
Stream<Integer> distinctStream = numbers.stream().distinct();
distinctStream.forEach(System.out::println);
```
上述代码会输出以下结果:
```
1
2
3
4
5
6
```
在这个例子中,我们使用了一个包含重复元素的List,然后通过调用stream方法将List转换为Stream。接着,我们使用distinct方法去除重复元素,并将结果存储在一个新的Stream中。最后,我们通过forEach方法遍历新的Stream,并打印每个元素。
希望这个例子可以帮助你理解如何在Stream中去重。
JAVA stream 去重
在Java中,可以使用Stream来对集合进行去重操作。有几种常见的方式可以实现去重:
1. 使用distinct()方法:distinct()方法会返回一个去重后的Stream,它会根据对象的equals()方法来判断是否重复。例如:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 5, 5);
List<Integer> distinctNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distinctNumbers); // 输出:[1, 2, 3, 4, 5]
```
2. 使用HashSet:利用HashSet的特性来去重,HashSet会自动去除重复的元素。例如:
```java
List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 5, 5);
List<Integer> distinctNumbers = new ArrayList<>(new HashSet<>(numbers));
System.out.println(distinctNumbers); // 输出:[1, 2, 3, 4, 5]
```
3. 自定义比较器:如果需要根据对象的某个属性进行去重,可以使用自定义的比较器。例如:
```java
class Person {
private String name;
private int age;
// 省略构造方法和getter/setter
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age;
}
@Override
public int hashCode() {
return Objects.hash(age);
}
}
List<Person> people = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 30),
new Person("Alice", 20)
);
List<Person> distinctPeople = people.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(distinctPeople); // 输出:[Person{name='Alice', age=20}, Person{name='Bob', age=30}]
```
这些方法都可以实现Stream的去重操作,根据具体的需求选择合适的方式即可。
阅读全文