java 代码 list对象 多个字段分组
时间: 2023-10-03 17:09:21 浏览: 98
如果需要对List对象进行多个字段分组,可以使用Java 8的Stream API结合Collectors.groupingBy()方法的重载版本来实现。具体操作如下:
假设我们有一个List<Person>对象,每个Person对象有两个属性:age和gender,我们想按照这两个属性的值进行分组:
```
List<Person> personList = new ArrayList<>();
// 添加Person对象到列表中
Map<List<Object>, List<Person>> groupMap = personList.stream()
.collect(Collectors.groupingBy(p -> Arrays.asList(p.getAge(), p.getGender())));
// groupMap是一个Map<List<Object>, List<Person>>对象,key是按照age和gender属性分组的结果,value是所有符合条件的Person对象列表
```
上述代码中,我们使用了Collectors.groupingBy()方法的重载版本,该版本接受一个Function对象和一个Collector对象作为参数,用于指定分组依据和分组结果的收集器。在本例中,我们使用了Arrays.asList()方法来将age和gender属性的值组成一个List对象,作为分组的结果。最终得到的groupMap是一个Map对象,key是按照age和gender属性分组的结果,value是所有符合条件的Person对象列表。
阅读全文