groupby java
时间: 2023-07-26 19:03:27 浏览: 61
在 Java 中,可以使用 Stream API 中的 `groupingBy` 方法来实现分组操作。该方法接受一个 `Function` 参数,用于指定分组的条件,并返回一个 `Collector` 对象,可以将流中的元素分组为一个 `Map` 对象。
例如,假设有一个 `List` 对象,存储了一些学生的信息:
```
List<Student> students = Arrays.asList(
new Student("Alice", "Math", 85),
new Student("Bob", "Math", 90),
new Student("Charlie", "Physics", 92),
new Student("David", "Physics", 87),
new Student("Eva", "Math", 88),
new Student("Frank", "Physics", 91)
);
```
可以使用以下代码将学生按照科目分组:
```
Map<String, List<Student>> groupBySubject = students.stream()
.collect(Collectors.groupingBy(Student::getSubject));
```
其中,`Student::getSubject` 指定了分组的条件,即按照学生的科目进行分组。执行该操作后,可以得到一个 `Map` 对象,其中每个键对应一个学科,对应的值为该学科的所有学生。可以使用以下代码输出结果:
```
System.out.println(groupBySubject);
```
输出结果为:
```
{Physics=[Student{name='Charlie', subject='Physics', score=92}, Student{name='David', subject='Physics', score=87}, Student{name='Frank', subject='Physics', score=91}], Math=[Student{name='Alice', subject='Math', score=85}, Student{name='Bob', subject='Math', score=90}, Student{name='Eva', subject='Math', score=88}]}
```
其中,键为学科名称,值为该学科的所有学生。
阅读全文