java的List实现分组
时间: 2024-01-21 18:04:32 浏览: 64
Java中的List可以通过流式API对其进行分组。假设我们有一个List,其中包含多个Person对象,每个Person对象都有一个age属性,我们可以按照年龄对这个List进行分组,代码示例如下:
```java
List<Person> personList = new ArrayList<>();
// 假设personList中有多个Person对象,每个对象都有一个age属性
Map<Integer, List<Person>> ageMap = personList.stream().collect(Collectors.groupingBy(Person::getAge));
```
在上述代码中,我们使用Java8的流式API对personList进行了分组,以年龄作为分组依据。我们使用`Collectors.groupingBy()`方法进行分组,并将年龄作为分组的依据,最终将结果存储在一个Map中,其中Map的key是年龄,value是对应年龄的Person对象列表。
如果我们需要对分组后的结果进行排序,我们可以在分组之后再进行排序,示例代码如下:
```java
Map<Integer, List<Person>> ageMap = personList.stream()
.collect(Collectors.groupingBy(Person::getAge,
Collectors.mapping(Function.identity(), Collectors.toList())))
.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(oldValue, newValue) -> oldValue, LinkedHashMap::new));
```
在上述代码中,我们首先使用`Collectors.groupingBy()`方法进行分组,并使用`Collectors.mapping()`方法将分组的结果转换为List。接着我们使用`entrySet()`方法将Map转换为Set,再使用`sorted()`方法对key进行排序,最后使用`Collectors.toMap()`方法将结果转换为LinkedHashMap。
阅读全文