java list对象中多个数据分组后分别取合计
时间: 2023-08-06 09:03:04 浏览: 82
List排序的通用方法——支持中文
您好,对于Java中的List对象,您可以使用Java 8中新增的Stream API来实现多个数据分组后分别取合计的操作。具体实现步骤如下:
1. 使用stream()方法将List对象转换成Stream对象。
2. 使用Collectors.groupingBy()方法对数据进行分组,该方法接受一个Function参数,表示根据哪个属性进行分组。
3. 使用Collectors.summingInt()方法对分组后的数据进行求和,该方法接受一个ToIntFunction参数,表示对哪个属性进行求和。
4. 使用Collectors.toMap()方法将分组后的数据转换成Map对象,该方法接受两个Function参数,分别表示Map的key和value。
下面是一个示例代码,假设有一个User类,包含id、name和age三个属性:
```
List<User> userList = new ArrayList<>();
userList.add(new User(1, "张三", 20));
userList.add(new User(2, "李四", 30));
userList.add(new User(3, "王五", 40));
userList.add(new User(4, "赵六", 20));
userList.add(new User(5, "钱七", 30));
Map<Integer, Integer> ageSumMap = userList.stream()
.collect(Collectors.groupingBy(User::getAge, Collectors.summingInt(User::getId)));
System.out.println(ageSumMap);
```
该代码将userList按照年龄进行分组,并对每组的id求和,最终输出结果为{20=5, 30=7, 40=3}。其中,20代表年龄为20的用户的id之和为5,依此类推。
希望能解答您的问题,如有疑问请随时追问。
阅读全文