java List判断某个字段是否有重复的值
时间: 2023-08-17 15:27:06 浏览: 66
可以使用Java 8的Stream API来实现。假设你有一个List<Person> persons,其中Person类有一个字段name,你想判断是否存在重复的name值,可以这样做:
```java
boolean hasDuplicateNames = persons.stream()
.map(Person::getName)
.distinct()
.count() != persons.size();
```
这段代码使用stream()方法将List转换为Stream,然后使用map()方法将Person对象转换为name字段的值,再使用distinct()方法去重,最后使用count()方法统计去重后的数量。如果去重后的数量小于等于List的大小,说明存在重复的name值。将这个判断值赋给hasDuplicateNames即可。
需要注意的是,这种方法只能判断某个字段是否有重复的值,但无法得知哪些值是重复的。如果需要知道具体的重复值,可以使用Java 8的Collectors.groupingBy()方法进行分组,然后遍历Map进行判断。
相关问题
java List判断某个字段是否有重复的值,如果有取出重复的值
可以利用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值取出来。
java判断list中某个字段是否有某个值
可以使用 Java 的流式 API,先将集合转换为流,然后使用 anyMatch() 方法判断是否有某个字段的值等于给定的值。示例代码如下:
```
boolean isExist = list.stream().anyMatch(item -> item.getField().equals(value));
```
其中,list 是要判断的集合,item.getField() 是要判断的字段,value 是给定的值。如果存在满足条件的元素,isExist 的值为 true,否则为 false。