java8 List根据多个字段去分类
时间: 2024-02-17 08:01:29 浏览: 109
在Java8中,您可以使用Stream API对List进行分组,然后使用Collectors.groupingBy()方法将其分组。在这个方法中,您可以使用一个Function来指定分组条件,例如按照某个字段进行分组。如果您想要按照多个字段进行分组,您可以将这些字段组合成一个键,然后将其作为Function的返回值。以下是一个示例代码:
```
List<MyObject> myList = new ArrayList<>();
// 假设 MyObject 有两个字段 name 和 age
Map<String, Map<Integer, List<MyObject>>> groupedMap = myList.stream()
.collect(Collectors.groupingBy(obj -> obj.getName() + obj.getAge(),
Collectors.groupingBy(MyObject::getAge)));
```
在这个示例中,我们将MyObject对象按照 name + age 的组合作为键来进行分组,然后使用Collectors.groupingBy()将其进一步分组。这将生成一个Map<String, Map<Integer, List<MyObject>>>对象,其中第一层Map的键是 name + age 的组合,第二层Map的键是 age,值是相应的MyObject对象列表。
注意,这只是一个示例代码,您可以根据自己的需求调整分组条件和返回值类型。
阅读全文