Java 8 stream 分组 合并
来源:互联网 发布:软件性能指标展示 ppt 编辑:程序博客网 时间:2024/06/11 11:48
使用很简单,功能很强大
package com.lee;import java.util.ArrayList;import java.util.List;import java.util.Optional;import java.util.stream.Collectors;public class Main { public static void main(String[] args) { List<Buss> bussList = new ArrayList<>(); bussList.add(new Buss("a",10,0.3)); bussList.add(new Buss("b",3,0.8)); bussList.add(new Buss("c",5,2.0)); bussList.add(new Buss("b",30,3.2)); bussList.add(new Buss("c",20,0.1)); List<Buss> st = new ArrayList<>(); bussList.stream() .collect(Collectors.groupingBy(Buss::getName)) //分组(Name can't be null) .forEach((k,v) -> { Optional<Buss> sum = v.stream().reduce((v1,v2) -> { //合并 v1.setCount(v1.getCount()+v2.getCount()); v1.setValue(v1.getValue()+v2.getValue()); return v1; }); st.add(sum.orElse(new Buss("other",0,0.0))); }); System.out.println(st); }}class Buss { private String name; private int count; private double value; public Buss(String name, int count, double value) { this.name = name; this.count = count; this.value = value; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public double getValue() { return value; } public void setValue(double value) { this.value = value; } @Override public String toString() { return "Buss{" + "name='" + name + '\'' + ", count=" + count + ", value=" + value + '}'; }}
Output
[Buss{name='a', count=10, value=0.3}, Buss{name='b', count=33, value=4.0}, Buss{name='c', count=25, value=2.1}]
如何根据两个字段排序
可以再 model里面 ,写一个类似的方法即可
下例,分组的key 就是 name+value
public String groupField() { return getName()+"-"+getValue(); }
阅读全文
1 0
- Java 8 stream 分组 合并
- JAVA 8 Stream API 对Stream进行分组、分区
- Storm中Stream分组
- Java Stream(8)(Stream完结)
- Java 8 stream()分组,过滤筛选 List<Object> 根据Object 中的某几个属性作为条件进行分组 去重过滤
- Java 8 Stream
- java 8 中的stream
- Java 8 Stream Tutorial
- Java 8 Stream API
- Java 8 Stream 原理
- Java 8 Stream
- Java 8 Stream API
- Storm的Stream分组方式
- Stream流分组,统计,求和
- Java8 Stream的分组,分区
- Java 8 Stream API详解
- Java 8: Stream map method
- Java 8: Stream filter method
- 正则表达式验证密码(大小写字母、数字、特殊符号 四选三)
- Ubuntu 16.04下安装OpenStack(juno) 之add the image service报错分析
- JavaWeb学习总结(一)——JavaWeb开发入门
- Java中对象数组初始化和排序
- 开源一个用于查看搬瓦工 VPS 流量使用情况的小网页(PHP)
- Java 8 stream 分组 合并
- java.util.Date和java.sql.Date的区别及应用
- 安卓学习笔记(6)-控制ListView显示列表的数量
- 【洛谷】P1965 转圈游戏
- C程序内存布局
- JavaWeb学习总结(二)——Tomcat服务器学习和使用(一)
- LambdaHelper 通过反射调用Dal中方法是设置Lambda参数
- python学习之文件与文件系统(一)
- HNU OJ题库 1001B图像旋转问题