Java list多级分组
时间: 2023-09-01 14:11:09 浏览: 291
可以使用Java 8的Stream API和Collectors.groupingBy()方法进行多级分组。以下是一个示例代码:
假设我们有一个名为Person的类,具有id(字符串类型)、name(字符串类型)和age(整数类型)属性。
```java
List<Person> persons = new ArrayList<>();
// 添加Person对象到列表中
Map<String, Map<String, List<Person>>> groupedPersons = persons.stream()
.collect(Collectors.groupingBy(Person::getId,
Collectors.groupingBy(Person::getName)));
```
这将根据id和name属性对Person对象进行多级分组。结果将是一个Map<String, Map<String, List<Person>>>对象,其中第一级键是id,第二级键是name,值是Person对象的列表。
您还可以使用Collectors.toMap()方法将结果转换为Map<String, List<Person>>对象:
```java
Map<String, List<Person>> flatGroupedPersons = persons.stream()
.collect(Collectors.groupingBy(Person::getId,
Collectors.toMap(Person::getName, Function.identity())));
```
这将产生一个Map<String, List<Person>>对象,其中第一级键是id,第二级键是name,值是Person对象。请注意,此方法不适用于具有相同名称的不同年龄的Person对象。
阅读全文