有一个 List< Bean >
Bean 有 key, value1,value2 三个属性
list 的数据 [a,2,3],[b,1,1],[a,1,1],[c,1,1],[b,1,1]
按照 key 进行分组,分组的同时 把 value1 和 value2 求和
最后需要的结果是 [a,3,4] [b,2,2] [c,1,1]
一句 stream api 怎么写呢?
有一个 List< Bean >
Bean 有 key, value1,value2 三个属性
list 的数据 [a,2,3],[b,1,1],[a,1,1],[c,1,1],[b,1,1]
按照 key 进行分组,分组的同时 把 value1 和 value2 求和
最后需要的结果是 [a,3,4] [b,2,2] [c,1,1]
一句 stream api 怎么写呢?
Map ret = sumReports.stream().collect(toMap(o -> o.getProjectId(), Function.identity(), (a, b) ->
new SumReport(a.getProjectId(), a.getProjectName(),
a.getServiceId(), a.getServiceName(),
a.getInvokeTime() + b.getInvokeTime(), a.getErrorTime() + b.getErrorTime())));
这样算一句吗 😂
list.stream().collect(Collectors.groupingBy(Mainlove::getKey)).forEach((k, v)-> cml.add(new Mainlove(k, v.stream().mapToInt(Mainlove::getV1).sum(), v.stream().mapToInt(Mainlove::getV2).sum())));
执行结果: https://ideone.com/kWbAG7
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Mainlove {
private String key;
private int v1;
private int v2;
public Mainlove(String key, int v1, int v2) {
setKey(key);
setV1(v1);
setV2(v2);
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public int getV1() {
return v1;
}
public void setV1(int v1) {
this.v1 = v1;
}
public int getV2() {
return v2;
}
public void setV2(int v2) {
this.v2 = v2;
}
public String toString() {
return String.format("%s %s %s", getKey(), getV1(), getV2());
}
public static void main(String[] args) {
List<Mainlove> list = new ArrayList<>();
list.add(new Mainlove("a", 2, 3));
list.add(new Mainlove("b", 1, 1));
list.add(new Mainlove("a", 1, 1));
list.add(new Mainlove("c", 1, 1));
list.add(new Mainlove("b", 1, 1));
List<Mainlove> cml = new ArrayList<>();
// 一行处理
list.stream().collect(Collectors.groupingBy(Mainlove::getKey)).forEach((k, v)-> cml.add(new Mainlove(k, v.stream().mapToInt(Mainlove::getV1).sum(), v.stream().mapToInt(Mainlove::getV2).sum())));
cml.forEach(System.out::println);
}
}
面试造航母,上班拧螺丝。多面试,少加班。
GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。
InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。
PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。
如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。
BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。
笔记整理交给我,一心只读圣贤书。
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。
昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。
提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。
FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。
Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。
安全 · 稳定 · 快速
为跨境从业人员提供专业的跨境浏览器
Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。
房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。
OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
FlowUs.息流 个人及团队的新一代生产力工具。
让复杂的信息管理更轻松、自由、充满创意。
Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。
H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。
你若安好,便是晴天。
智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。
webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于