java中list通过某个字段被group by
时间: 2024-10-26 11:17:06 浏览: 25
在Java中,如果你有一个`List`对象,其中每个元素都有一个可以作为分组依据的字段,你可以使用`java.util.stream.Collectors` API 来实现基于这个字段的分组。假设你有一个名为`Person`的对象列表,它有一个`String`类型的`category`字段:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
class Person {
String name;
String category;
// constructor and getters/setters...
}
// 假设我们有一个Person对象的列表
List<Person> people = ...; // 初始化一些Person对象
// 使用stream对people按category进行分组
Map<String, List<Person>> groupedPeople = people.stream()
.collect(Collectors.groupingBy(Person::getCategory));
// 现在groupedPeople是一个Map,键是category,值是包含该类别所有人的列表
```
在这个例子中,`Collectors.groupingBy()`函数接收一个谓词(这里是`Person::getCategory`),它返回每个元素的`category`属性。这将创建一个新的`Map`,其中每一项都是一个`category`对应的`List<Person>`。
阅读全文