使用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之和。

Java Stream流统计实体列表中相同id的num之和

原文地址: https://www.cveoy.top/t/topic/ozTE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录