java stream简介
(1)Stream
Stream(流)是一个来自数据源的元素队列并支持聚合操作。
forEach方法用来迭代流中的每个数据,没有返回值。map方法用于映射每个元素到对应的结果,有返回值,返回的是一个新流,可以对这个流进一步操作。
filter方法用于通过设置的条件过滤出元素。limit返回前n个元素。skip则是返回除前n个元素的元素。distinct方法用于去重。
sorted方法用于对流进行排序,例如,sorted()用于升序,sorted(Comparator.reverseOrder())用于降序。
max用于获取最大值。min用于获取最小值。count用于计算元素数量。sum用于求和。
anyMatch满足一个条件则返回true。allMatch满足所有条件则返回true。noneMatch不满足所有条件则返回true。findFirst返回第一个元素。findAny返回任意一个元素。
collect,收集流。Collectors类实现了很多归约操作,例如,toList、toMap、toSet、counting、summingInt、averagingInt、maxBy、minBy、joining、groupingBy等等。
reduce,聚合,将流中全部的数据聚合成一个值。
(2)测试
User tom = new User(1, "tom", 2, new Date());
User jerry = new User(3, "jerry", 1, new Date());
User diana = new User(2, "diana", 3, new Date());
List<User> userList = Arrays.asList(tom, jerry, diana);
log.info("list:{}", userList);
userList.stream().forEach(u -> {if (u.getAge() > 1) {log.info("{}", u);}
});
List<Integer> list = userList.stream().map(u -> u.getAge() + 1).limit(10).sorted(Comparator.reverseOrder()).collect(Collectors.toList());
log.info("list:{}", list);
Map<Integer, Object> map = userList.stream().collect(Collectors.toMap(User::getId, User::getName));
log.info("map:{}", map);
boolean flag = userList.stream().anyMatch(u -> u.getAge() > 5);
log.info("flag:{}", flag);
User any = userList.stream().findAny().get();
log.info("any:{}", any);
User max = userList.stream().max((u1, u2) -> u1.getAge() - u2.getAge()).get();
log.info("max:{}", max);
Integer sum = userList.stream().map(u -> u.getAge()).reduce(0, (a1, a2) -> {return a1 + a2;
}).intValue();
log.info("sum:{}", sum);
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - list:[User(id=1, name=tom, age=2, birth=Fri Jan 26 14:45:26 CST 2024), User(id=3, name=jerry, age=1, birth=Fri Jan 26 14:45:26 CST 2024), User(id=2, name=diana, age=3, birth=Fri Jan 26 14:45:26 CST 2024)]
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - User(id=1, name=tom, age=2, birth=Fri Jan 26 14:45:26 CST 2024)
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - User(id=2, name=diana, age=3, birth=Fri Jan 26 14:45:26 CST 2024)
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - list:[4, 3, 2]
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - map:{1=tom, 2=diana, 3=jerry}
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - flag:false
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - any:User(id=1, name=tom, age=2, birth=Fri Jan 26 14:45:26 CST 2024)
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - max:User(id=2, name=diana, age=3, birth=Fri Jan 26 14:45:26 CST 2024)
2024-01-26 14:45:26 [http-nio-8080-exec-4] INFO cn.hwd.controller.TestController - sum:6
相关文章:
java stream简介
(1)Stream Stream(流)是一个来自数据源的元素队列并支持聚合操作。 forEach方法用来迭代流中的每个数据,没有返回值。map方法用于映射每个元素到对应的结果,有返回值,返回的是一个新流…...

机电制造ERP软件有哪些品牌?哪家的机电制造ERP系统比较好
机电制造过程比较复杂,涵盖零配件、采购、图纸设计、工艺派工、生产计划、物料需求计划、委外加工等诸多环节。而供应链涉及供应商的选择、材料采购价格波动分析、材料交货、品质检验等过程,其中某个环节出现问题都可能会影响产品交期和经营效益。 近些…...
分布式ID(4):雪花算法生成ID之Leaf(美团点评分布式ID生成系统)
1 Leaf官方地址 Leaf源码地址: https://github.com/Meituan-Dianping/Leaf Leaf官方说明文档地址: https://tech.meituan.com/2019/03/07/open-source-project-leaf.htmlhttps://github.com/Meituan-Dianping/Leaf/blob/master/README_CN.md 这边只做简单介绍,详细说明…...

翻译: GPT-4 Vision征服LLM幻觉hallucinations 升级Streamlit六
GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…...
TextView的setTextSize与xml中android:textSize属性值的对应关系
android中,对TextView设置文本字体大小,是通过在layout xml中设置android:textSize的属性值实现的,比如设置“24sp”,这里的sp是一种单位,其他可选的单位还有px,dip(dp),pt,in&#…...

广东盈致mes系统在注塑行业的应用
广东盈致MES系统在注塑行业的应用主要体现在以下几个方面: 生产计划与调度:盈致MES系统能够根据订单需求和生产计划,自动生成生产任务,并跟踪生产进度,确保按时完成生产任务。通过与注塑机的集成,系统可以自…...

如何获得《幻兽帕鲁》隐藏帕鲁唤夜兽?13000个配种配方查询 幻兽帕鲁Steam好评率还在涨 Mac苹果电脑玩幻兽帕鲁 Crossover玩Windows游戏
《幻兽帕鲁》是一款Steam平台热门游戏,开放式大陆和养成式冒险结合,成为2024首款热门游戏,不过由于官方仅发布了Windows版的游戏客户端,Mac用户无法直接玩,好在有Crossover这样的神器,让苹果电脑也能玩上《…...

elementui中的tree自定义图标
需求:实现如下样式的树形列表 自定义树的图标以及点击时,可以根据子级的关闭,切换图标 <el-tree :data"treeList" :props"defaultProps"><template #default"{ node, data }"><span class&quo…...

mybatis实现模糊搜索
这里使用if标签进行是实现,使用like标签也可以实现,只是容易出错了,下面 直接上代码 只需要把字段名和搜索条件替换就行。 <select id"selectByLike" parameterType"map" resultType"YourResultType">…...
ssh 修改端口号 一个ip ssh多个主机
ssh默认端口为22。 通过路由映射,保留一个22端口,其它主机修改端口,可以用一个ip ssh多个主机。 修改端口需修改/etc/ssh/sshd_config sudo vim /etc/ssh/sshd_config/Port #Port 22删除前面的#,然后修改端口号,如23 …...

Proto文件如何生成JavaProto对象?
首先安装好Protocol Buffer的编译器 Protocol Buffer: version:2.6.1 link: 链接直达 根据电脑环境进行下载,Widnwos 32/64位就选择win32是没问题的,楼主亲测 1.proto文件编写 Person.proto public class Person {String name;int id;String email…...
LightDB 24.1 UNION支持null类型匹配
背景介绍 在LightDB 24.1之前的版本,UNION null类型匹配会报错。 lightdbpostgres# select null l_zqlbmx2 union all select null l_zqlbmx2 union all select sysdate l_zqlbmx; ERROR: UNION types text and timestamp without time zone…...

使用vs2022将.net8的应用程序发布为一个单独文件
在使用.NetCore3.1时,可以通过设置以下工程配置文本来将项目发布为一个单独的应用程序文件: <Project Sdk"Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><…...
面试经典150题(93-95)
leetcode 150道题 计划花两个月时候刷完,今天(第五十三天)完成了3道(93-95)150: 93.(53. 最大子数组和)题目描述: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组&am…...
flask 实现token生成以及携带token请求接口
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Flask-JWT-Extended是什么?二、使用步骤1.引入库2.请求验证 总结 前言 提示:这里可以添加本文要记录的大概内容: 提示&…...

docker-compose部署单机ES+Kibana
记录部署的操作步骤 准备工作编写docker-compose.yml启动服务验证部署结果 本次elasticsearch和kibana版本为8.2.2 使用环境:centos7.9 本次记录还包括:安装elasticsearch中文分词插件和拼音分词插件 准备工作 1、创建目录和填写配置 mkdir /home/es/s…...
gitee仓库项目迁移到gitlab仓库
背景 之前一直使用gitee代码仓库提交代码,现在需要将gitee仓库中的代码迁移到gitlab中,并保留原有的提交记录。 前提 配置好了本地git,并本地与gitlab仓库已连接。 我这里使用 ssh方式拉去代码,因此需要配置ssh密钥 步骤 也可以直…...

安装elasticsearch、kibana、IK分词器
1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: docker network create es-net 1.2.加载镜像 这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大࿰…...

海外云手机运营Instagram攻略
Instagram是世界著名的社交媒体平台,有着10亿实时用户,是跨境电子商务的优质流量来源。平台以女性用户为主,购物倾向高,转化率好。它被公认为外贸行业的优质社交媒体流量池。那么,如何使用海外云手机吸引Instagram上的…...

【lesson25】学习MySQL事务前的基础知识
文章目录 CURD不加控制,会有什么问题?CURD满足什么属性,能解决上述问题?什么是事务?为什么会出现事务事务的版本支持 CURD不加控制,会有什么问题? CURD满足什么属性,能解决上述问题&…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...