java stream分组数据
时间: 2024-04-12 22:25:25 浏览: 101
详解Java8 Collect收集Stream的方法
Java Stream提供了一种方便的方式来对数据进行分组操作。通过使用Stream的groupingBy方法,我们可以根据指定的条件将数据分组成一个Map对象,其中键是分组的条件,值是对应的数据列表。
下面是Java Stream分组数据的示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 假设有一个包含Person对象的列表
List<Person> persons = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 25),
new Person("Charlie", 30),
new Person("Alice", 35)
);
// 根据姓名进行分组
Map<String, List<Person>> groupedByName = persons.stream()
.collect(Collectors.groupingBy(Person::getName));
// 输出分组结果
for (String name : groupedByName.keySet()) {
System.out.println("Name: " + name);
System.out.println("Persons: " + groupedByName.get(name));
System.out.println();
}
}
static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}
```
上述代码中,我们定义了一个Person类,包含姓名和年龄两个属性。然后创建了一个包含Person对象的列表。通过使用Stream的groupingBy方法,我们根据姓名对Person对象进行分组,得到一个Map对象。最后,我们遍历Map对象,输出分组结果。
阅读全文