Collectors.groupingBy获取一个属性出现最多的对象
时间: 2023-07-26 10:16:08 浏览: 82
深入探索Java 8的`Collectors.groupingBy()`:分组的艺术
可以使用Java 8中的Collectors.groupingBy方法和Collectors.counting方法来获取一个属性出现最多的对象。假设我们有一个对象列表,每个对象都有一个属性name,我们要获取出现最多的name对应的对象。可以使用以下代码:
```
Map<String, Long> nameCountMap = objectList.stream()
.collect(Collectors.groupingBy(Object::getName, Collectors.counting()));
String mostCommonName = Collections.max(nameCountMap.entrySet(), Map.Entry.comparingByValue()).getKey();
Object mostCommonObject = objectList.stream()
.filter(obj -> obj.getName().equals(mostCommonName))
.findFirst()
.orElse(null);
```
这段代码首先使用groupingBy方法对name进行分组,并使用counting方法计算每个name出现的次数,返回一个Map。然后使用Collections.max方法获取出现次数最多的name,再使用findFirst方法找到第一个name与最多出现次数的name相同的对象。
阅读全文