如何在Java 8中使用Stream API对List集合进行分组操作?
时间: 2025-01-03 09:44:57 浏览: 6
在Java 8的Stream API中,可以使用`Collectors.groupingBy()`函数来对List集合进行分组操作。这个方法允许你基于每个元素的一个或多个属性将它们分到不同的组中。下面是一个简单的例子:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 假设我们有一个包含Person对象的List
List<Person> people = Arrays.asList(
new Person("Alice", "Group A"),
new Person("Bob", "Group B"),
new Person("Charlie", "Group A"),
new Person("Dave", "Group C")
);
// 使用groupingBy方法按姓名的第一个字符分组
Map<Character, List<Person>> groupedPeople = people.stream()
.collect(Collectors.groupingBy(Person::getFirstNameChar));
// 打印结果
groupedPeople.forEach((key, value) -> System.out.println(key + ": " + value));
}
}
class Person {
private String firstName;
private String group;
// 构造器、getter和setter省略
public char getFirstNameChar() {
return firstName.charAt(0);
}
}
```
在这个例子中,`Person::getFirstNameChar`是一个Lambda表达式,它返回每个Person对象的姓氏首字母作为分组键。运行这段代码会得到如下的输出:
```
A: [Person@... (Alice, Charlie)]
B: [Person@... (Bob)]
C: [Person@... (Dave)]
```
阅读全文