java stream判断list里某个属性是否唯一,并指出重复的值
时间: 2024-12-12 17:23:29 浏览: 20
在Java中,你可以使用Stream API来判断List里的某个属性是否唯一,以及找出重复的值。假设你有一个Person列表,每个Person对象有name属性,你可以这样做:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Person {
String name;
// ... 其他属性
}
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
// 添加一些Person对象
if (personList.stream()
.distinct() // 去除重复的Person对象
.count() == personList.size()) { // 如果去重后的大小等于原大小,说明所有name都是唯一的
System.out.println("名字是唯一的");
} else {
List<String> duplicates = personList.stream()
.collect(Collectors.groupingBy(Person::getName))
.values().stream()
.filter(group -> group.size() > 1)
.flatMap(group -> group.stream())
.collect(Collectors.toList()); // 收集重复的name
System.out.println("重复的名字有:");
duplicates.forEach(System.out::println);
}
}
}
```
在这个例子中,我们首先通过`distinct()`去除重复的Person对象,然后检查剩余元素的数量是否与原始列表相等。如果不等,我们就收集所有重复的name。
阅读全文