Java Stream流统计实体列表中相同id的num之和
使用Java Stream流统计实体列表中相同id的num之和
本文介绍如何使用Java Stream流,根据实体列表中id字段分组,并统计每个id对应的num字段之和。
1. 定义实体类
首先定义一个实体类,包含id和num两个字段。
public class Entity {
private String id;
private Integer num;
// 省略构造方法和getter、setter
}
2. 创建实体列表
创建实体列表,并添加四个实体对象。
List<Entity> list = new ArrayList<>();
list.add(new Entity('小明', 2));
list.add(new Entity('小红', 3));
list.add(new Entity('小明', 4));
list.add(new Entity('小红', 6));
3. 使用Stream流进行统计
使用Stream流进行统计,按照id分组并计算num和。
Map<String, Integer> result = list.stream()
.collect(Collectors.groupingBy(Entity::getId, Collectors.summingInt(Entity::getNum)));
4. 输出结果
输出结果。
System.out.println(result);
// 输出:{'小明'=6, '小红'=9}
完整代码
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Entity> list = new ArrayList<>();
list.add(new Entity('小明', 2));
list.add(new Entity('小红', 3));
list.add(new Entity('小明', 4));
list.add(new Entity('小红', 6));
Map<String, Integer> result = list.stream()
.collect(Collectors.groupingBy(Entity::getId, Collectors.summingInt(Entity::getNum)));
System.out.println(result);
}
}
class Entity {
private String id;
private Integer num;
public Entity(String id, Integer num) {
this.id = id;
this.num = num;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
}
代码说明
Collectors.groupingBy(Entity::getId):根据id字段进行分组。Collectors.summingInt(Entity::getNum):对每个分组的num字段进行求和。
通过以上代码,我们可以轻松地使用Java Stream流对实体列表进行统计,并得到每个id对应的num之和。
原文地址: https://www.cveoy.top/t/topic/ozTE 著作权归作者所有。请勿转载和采集!