当前位置: 首页 > news >正文

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简介

&#xff08;1&#xff09;Stream Stream&#xff08;流&#xff09;是一个来自数据源的元素队列并支持聚合操作。 forEach方法用来迭代流中的每个数据&#xff0c;没有返回值。map方法用于映射每个元素到对应的结果&#xff0c;有返回值&#xff0c;返回的是一个新流&#xf…...

机电制造ERP软件有哪些品牌?哪家的机电制造ERP系统比较好

机电制造过程比较复杂&#xff0c;涵盖零配件、采购、图纸设计、工艺派工、生产计划、物料需求计划、委外加工等诸多环节。而供应链涉及供应商的选择、材料采购价格波动分析、材料交货、品质检验等过程&#xff0c;其中某个环节出现问题都可能会影响产品交期和经营效益。 近些…...

分布式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中&#xff0c;对TextView设置文本字体大小&#xff0c;是通过在layout xml中设置android:textSize的属性值实现的&#xff0c;比如设置“24sp”&#xff0c;这里的sp是一种单位&#xff0c;其他可选的单位还有px&#xff0c;dip(dp)&#xff0c;pt&#xff0c;in&#…...

广东盈致mes系统在注塑行业的应用

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

如何获得《幻兽帕鲁》隐藏帕鲁唤夜兽?13000个配种配方查询 幻兽帕鲁Steam好评率还在涨 Mac苹果电脑玩幻兽帕鲁 Crossover玩Windows游戏

《幻兽帕鲁》是一款Steam平台热门游戏&#xff0c;开放式大陆和养成式冒险结合&#xff0c;成为2024首款热门游戏&#xff0c;不过由于官方仅发布了Windows版的游戏客户端&#xff0c;Mac用户无法直接玩&#xff0c;好在有Crossover这样的神器&#xff0c;让苹果电脑也能玩上《…...

elementui中的tree自定义图标

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

mybatis实现模糊搜索

这里使用if标签进行是实现&#xff0c;使用like标签也可以实现&#xff0c;只是容易出错了&#xff0c;下面 直接上代码 只需要把字段名和搜索条件替换就行。 <select id"selectByLike" parameterType"map" resultType"YourResultType">…...

ssh 修改端口号 一个ip ssh多个主机

ssh默认端口为22。 通过路由映射&#xff0c;保留一个22端口&#xff0c;其它主机修改端口&#xff0c;可以用一个ip ssh多个主机。 修改端口需修改/etc/ssh/sshd_config sudo vim /etc/ssh/sshd_config/Port #Port 22删除前面的#&#xff0c;然后修改端口号&#xff0c;如23 …...

Proto文件如何生成JavaProto对象?

首先安装好Protocol Buffer的编译器 Protocol Buffer: version:2.6.1 link: 链接直达 根据电脑环境进行下载&#xff0c;Widnwos 32/64位就选择win32是没问题的&#xff0c;楼主亲测 1.proto文件编写 Person.proto public class Person {String name;int id;String email…...

LightDB 24.1 UNION支持null类型匹配

背景介绍 在LightDB 24.1之前的版本&#xff0c;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时&#xff0c;可以通过设置以下工程配置文本来将项目发布为一个单独的应用程序文件&#xff1a; <Project Sdk"Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><…...

面试经典150题(93-95)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第五十三天&#xff09;完成了3道(93-95)150&#xff1a; 93.&#xff08;53. 最大子数组和&#xff09;题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&am…...

flask 实现token生成以及携带token请求接口

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Flask-JWT-Extended是什么&#xff1f;二、使用步骤1.引入库2.请求验证 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 提示&…...

docker-compose部署单机ES+Kibana

记录部署的操作步骤 准备工作编写docker-compose.yml启动服务验证部署结果 本次elasticsearch和kibana版本为8.2.2 使用环境&#xff1a;centos7.9 本次记录还包括&#xff1a;安装elasticsearch中文分词插件和拼音分词插件 准备工作 1、创建目录和填写配置 mkdir /home/es/s…...

gitee仓库项目迁移到gitlab仓库

背景 之前一直使用gitee代码仓库提交代码&#xff0c;现在需要将gitee仓库中的代码迁移到gitlab中&#xff0c;并保留原有的提交记录。 前提 配置好了本地git&#xff0c;并本地与gitlab仓库已连接。 我这里使用 ssh方式拉去代码&#xff0c;因此需要配置ssh密钥 步骤 也可以直…...

安装elasticsearch、kibana、IK分词器

1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里先创建一个网络&#xff1a; docker network create es-net 1.2.加载镜像 这里我们采用elasticsearch的7.12.1版本的镜像&#xff0c;这个镜像体积非常大&#xff0…...

海外云手机运营Instagram攻略

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

【lesson25】学习MySQL事务前的基础知识

文章目录 CURD不加控制&#xff0c;会有什么问题&#xff1f;CURD满足什么属性&#xff0c;能解决上述问题&#xff1f;什么是事务&#xff1f;为什么会出现事务事务的版本支持 CURD不加控制&#xff0c;会有什么问题&#xff1f; CURD满足什么属性&#xff0c;能解决上述问题&…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...