JAVA 实现大批量数据的分组统计
时间: 2023-09-13 14:05:46 浏览: 78
JAVA8 stream中三个参数的reduce方法对List进行分组统计操作
5星 · 资源好评率100%
你可以使用 Java 8 的 Stream API 来实现大批量数据的分组统计。以下是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class GroupingExample {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("John", 30),
new Person("Jane", 25),
new Person("Bob", 30),
new Person("Alice", 25),
new Person("Mary", 35)
);
// 按年龄分组并统计人数
Map<Integer, Long> countByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge, Collectors.counting()));
System.out.println(countByAge);
// 按年龄分组并计算平均年龄
Map<Integer, Double> averageAgeByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge, Collectors.averagingDouble(Person::getAge)));
System.out.println(averageAgeByAge);
// 按年龄分组并将人名拼接成字符串
Map<Integer, String> namesByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge, Collectors.mapping(Person::getName, Collectors.joining(", "))));
System.out.println(namesByAge);
}
static class Person {
private String name;
private int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
String getName() {
return name;
}
int getAge() {
return age;
}
}
}
```
在上面的示例中,我们使用了 `groupingBy()` 方法来按照年龄分组,并且使用了不同的 Collector 来进行统计计算。你可以根据你的具体需求选择不同的 Collector 来实现自己的分组统计。
阅读全文