java8根据分组去每组最小值
时间: 2023-05-04 11:02:05 浏览: 69
在Java8中,可以使用Stream API来根据分组去每组最小值。具体实现方法是使用Collectors.groupingBy()方法按照特定字段进行分组,并使用Collectors.minBy()方法求出每组最小值。
例如,假设有一个Person类,包含name、age和gender三个属性,现在需要把Person对象按照gender进行分组,然后求出每组中年龄最小的人。可以用以下代码实现:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象至personList
Map<String, Optional<Person>> minAgeByGenderMap = personList.stream()
.collect(Collectors.groupingBy(Person::getGender,
Collectors.minBy(Comparator.comparingInt(Person::getAge))));
```
上述代码中,首先使用Collectors.groupingBy()方法把Person对象按照gender字段进行分组,其中Person::getGender表示根据Person对象的gender属性进行分组,然后使用Collectors.minBy()方法求出每组中年龄最小的人,其中Comparator.comparingInt(Person::getAge)表示根据Person对象的age属性进行比较大小。
最终得到的minAgeByGenderMap是一个Map,key为每组的gender值,value为该组中年龄最小的Person对象,其中Optional用于处理可能不存在最小值的情况,防止出现NullPointerException。
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)