可以使用Java 8的Stream API中的groupingBy方法来根据2个字段进行分组。假设我们有一个List集合,其中包含多个对象,每个对象都有两个属性:name和age。我们想要根据这两个属性进行分组。
代码示例:
```
List
personList = new ArrayList<>();
// 假设已经将多个Person对象添加到personList中
Map>> groupedMap = personList.stream()
.collect(Collectors.groupingBy(Person::getName, Collectors.groupingBy(Person::getAge)));
```
上述代码中,我们首先调用了stream()方法将List转换为Stream,然后使用Collectors.groupingBy方法进行分组。第一个参数是按照哪个属性进行分组,第二个参数是按照哪个属性再次进行分组。最终得到的是一个嵌套的Map,第一层Map的key是name,第二层Map的key是age,value是对应的Person对象列表。
需要注意的是,如果我们只需要按照一个属性进行分组,可以直接使用Collectors.groupingBy方法,例如:
```
Map> groupedMap = personList.stream()
.collect(Collectors.groupingBy(Person::getName));
```