Java集合groupby
时间: 2023-08-25 09:07:54 浏览: 40
在 Java 中,可以使用 Stream API 来对集合进行 group by 操作。具体来说,可以使用 Collectors 类中的 groupingBy() 方法来实现该操作。下面是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> persons = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 25),
new Person("Charlie", 30),
new Person("David", 20),
new Person("Eve", 25)
);
Map<Integer, List<Person>> personsByAge = persons.stream()
.collect(Collectors.groupingBy(p -> p.age));
personsByAge.forEach((age, list) ->
System.out.println("Age " + age + ": " + list));
}
}
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return name;
}
}
```
在上面的示例中,我们首先定义了一个名为 Person 的简单类,用于表示一个人的姓名和年龄。然后,我们创建了一个包含多个 Person 对象的 List,并使用 Stream API 中的 groupingBy() 方法按照年龄对这些人进行了分组。最后,我们将分组结果输出到控制台上。
运行上面的代码,可以得到如下输出:
```
Age 20: [Alice, David]
Age 25: [Bob, Eve]
Age 30: [Charlie]
```
可以看到,我们成功地将原始集合按照年龄分成了不同的组。其中,每个组的键为年龄,值为包含相应 Person 对象的列表。