java List判断某个字段是否有重复的值,如果有取出重复的值
时间: 2023-08-16 14:31:32 浏览: 130
Java判断List中有无重复元素的方法
5星 · 资源好评率100%
可以利用Java 8的Stream API和Collectors的groupingBy方法来实现。假设你有一个List<Person> persons,其中Person类有一个字段name,你想判断是否存在重复的name值,并将重复的name值取出来,可以这样做:
```java
Map<String, Long> nameCountMap = persons.stream()
.collect(Collectors.groupingBy(Person::getName, Collectors.counting()));
List<String> duplicateNames = nameCountMap.entrySet().stream()
.filter(entry -> entry.getValue() > 1)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
```
这段代码首先使用Collectors.groupingBy方法将List按照name字段分组,并统计每个name值的出现次数,得到一个键为name,值为出现次数的Map。然后,再使用Stream API对Map进行遍历,找出出现次数大于1的键,将其取出放入List中。最终,duplicateNames即为重复的name值列表。
需要注意的是,如果有多个重复的name值,这段代码只会取出其中的一个。如果需要取出所有的重复name值,可以稍微修改一下代码,将duplicateNames的类型改为Set,并在第二个Stream中使用flatMap方法将重复的name值取出来。
阅读全文