Java 的 Stream
一、创建 Stream
1.1、创建 Stream 流
1.1.1、List 集合获取 Stream 流
Collection<String> list = new ArrayList<>();
Stream<String> s1 = list.stream();
1.1.2、Map 集合获取 stream 流
Map<String, Integer> map = new HashMap<>();
// 键流
Stream<String> s2 = map.keySet().stream();
// 值流
Stream<Integer> s3 = map.values().stream();
// 键值对
Stream<Map.Entry<String, Integer>> s4 = map.entrySet().stream();
1.1.3、数组获取 Stream 流
String[] strs = {"A", "B", "C"};
Stream<String> s5 = Arrays.stream(strs);
Stream<String> s6 = Stream.of(strs);
1.2、方法分类
1.2.1、中间方法

1.2.2、终结方法

1.2.3、收集方法

二、代码操作
public class MyUser {private Integer id;private String name;private Integer score;private List<String> menus;public MyUser() {}public MyUser(Integer id, String name, Integer score, List<String> menus) {this.id = id;this.name = name;this.score = score;this.menus = menus;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getScore() {return score;}public void setScore(Integer score) {this.score = score;}public List<String> getMenus() {return menus;}public void setMenus(List<String> menus) {this.menus = menus;}@Overridepublic String toString() {return "Merchant{" +"id=" + id +", name='" + name + '\'' +", score=" + score +", menus=" + menus +'}';}
}
public static void main(String[]args){MyUser myUser1 = new MyUser(1,"AA",11, Arrays.asList("A","B","C"));MyUser myUser2 = new MyUser(2,"BB",22, Arrays.asList("D","E","F"));MyUser myUser3 = new MyUser(3,"CC",19, Arrays.asList("O","P","H"));MyUser myUser4 = new MyUser(4,"DD",33, Arrays.asList("K","J","I"));MyUser myUser5 = new MyUser(5,"EE",39, Arrays.asList("X","M","N"));List<MyUser> list = Arrays.asList(myUser1,myUser2,myUser3,myUser4,myUser5);// 遍历plist.stream().forEach(s -> System.out.println(s));// 取最大值、最小值Comparator<? super MyUser> comparator = Comparator.comparing(MyUser::getScore);Optional<MyUser> max = list.stream().max(comparator);Optional<MyUser> min = list.stream().min(comparator);System.out.println("max: "+max);System.out.println("min: "+min);// 单个属性加减乘除,生成新集合。List<MyUser> collect1 = list.stream().map(x -> {x.setScore(x.getScore()+100);return x;}).collect(Collectors.toList());System.out.println("collect1: "+collect1);// 过滤元素 对原集合的成员的属性修改list.stream().filter(x->x.getId()>2).forEach(x -> {x.setName(x.getName()+100);});System.out.println("list22: "+list);// 统计//统计员工人数Long count = list.stream().collect(Collectors.counting());//求平均工资Double average = list.stream().collect(Collectors.averagingDouble(MyUser::getScore));//求最高工资Optional<Integer> max2 = list.stream().map(MyUser::getScore).collect(Collectors.maxBy(Integer::compare));//求工资之和Integer sum = list.stream().collect(Collectors.summingInt(MyUser::getScore));//一次性统计所有信息DoubleSummaryStatistics collect = list.stream().collect(Collectors.summarizingDouble(MyUser::getScore));System.out.println("统计员工人数:"+count);System.out.println("求平均工资:"+average);System.out.println("求最高工资:"+max2);System.out.println("求工资之和:"+sum);System.out.println("一次性统计所有信息:"+collect);// 过滤后 转为 MapMap map =list.stream().filter(s->s.getId()>3).collect(Collectors.toMap(s->s.getId(),y->y));System.out.println("map:"+map);}
相关文章:
Java 的 Stream
一、创建 Stream 1.1、创建 Stream 流 1.1.1、List 集合获取 Stream 流 Collection<String> list new ArrayList<>(); Stream<String> s1 list.stream(); 1.1.2、Map 集合获取 stream 流 Map<String, Integer> map new HashMap<>(); // …...
SolidUI社区-Discord
背景 随着文本生成图像的语言模型兴起,SolidUI想帮人们快速构建可视化工具,可视化内容包括2D,3D,3D场景,从而快速构三维数据演示场景。SolidUI 是一个创新的项目,旨在将自然语言处理(NLP)与计算机图形学相…...
Spring MVCSpring Boot
文章目录 Spring MVC什么是MVC模式Spring MVC优点SpringMVC 运行流程SpringMVC组件SpringMVC常用的注解有哪些SpringMVC的拦截器和过滤器有什么区别?执行顺序是什么 SpringBoot对SpringBoot的理解Spring和SpringBoot的关系?SpringBoot有哪些核心注解Spri…...
01-集群安装JDK(普通用户)
机器部署 集群规划 我们准备三台服务器kk01、kk02、kk03,内存4G、硬盘50G、处理器4核心2内核(总8) kk01使用 192.168.188.128 kk02使用 192.168.188.129 kk03使用 192.168.188.130 模板机准备 我们先创建一台作为模板机,后…...
小龟带你妙写排序之选择排序
选择排序 一. 原理二. 题目三. 思路分析四. 代码 一. 原理 选择排序(Selection-sort)是一种简单直观的排序算法。 工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未…...
深入解析 SOCKS5 代理及其在网络安全与爬虫中的应用
在当今数字化时代,网络安全和数据获取成为了互联网时代的重要课题。为了实现安全的网络连接和高效的数据采集,各种代理技术应运而生。本文将深入探讨 SOCKS5 代理及其在网络安全和爬虫领域的应用,同时比较其与其他代理方式的优势与劣势。 1.…...
day9 10-牛客67道剑指offer-JZ66、19、20、75、23、76、8、28、77、78
文章目录 1. JZ66 构建乘积数组暴力解法双向遍历 2. JZ19 正则表达式匹配3. JZ20 表示数值的字符串有限状态机遍历 4. JZ75 字符流中第一个不重复的字符5. JZ23 链表中环的入口结点快慢指针哈希表 6. JZ76 删除链表中重复的结点快慢指针三指针如果只保留一个重复结点 7. JZ8 二…...
气体检测仪语音报警芯片,可自行烧录的音频芯片,WT588F02B-8S
近年来,安全问题备受关注,特别是涉及气体泄漏的危险场景。 为了进一步增强气体检测仪的安全功能,市面上便研发出了一款有害气体报警器,并采用WT588F02B-8S语音提示芯片为元器件,为产品赋予更多声音,更多警示…...
gdb 调试汇编
starti 从第一条指令开始执行并停止. nexti 执行完当前指令; 当前指令可能是call一个函数, 但是仍然下一条指令才停止; stepi 下一条指令, 如果跳转也跟着跳转; 查看寄存器值 info registers 查看通用寄存器 info registers {register_name ...}指定寄存器的值 info reg…...
WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制
WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制参数 之前搭建ossrs服务,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话,可以查看:https://blog.csdn.net/gloryFlo…...
深入理解与运用Android Jetpack ViewModel
在Android开发中,数据与界面的分离一直是一项重要的挑战。为了解决这个问题,Google推出了Android Jetpack组件之一的ViewModel。ViewModel是一种用于管理UI相关数据的架构组件,它能够帮助开发者实现优雅的数据驱动和生命周期管理。本文将深入…...
【数据库】P0 创建数据库环境 MySQL + DataGrip
创建数据库环境 下载安装 MySQL下载安装 DataGrip 下载安装 MySQL Windows版本_MySQL 下载地址: https://dev.mysql.com/downloads/mysql/ 下载后依照默认顺序安装即可,本博文将讲述简约安装步骤; 如需详细安装步骤可见:https:/…...
js设置css变量控制页面一行展示指定个数的元素
前置知识: CSS变量之var()函数的应用——动态修改样式 & root的使用 flex相关知识 场景: 动态设置给父元素内子元素设置每行排列几个 通过 document.body.style.setProperty(--itemNum, 5)设置样式变量,然后通过给父元素设置display: f…...
4.0 Spring Boot入门
1. Spring Boot概述 Spring Boot介绍 Spring Boot是Pivotal团队在2014年推出的全新框架,主要用于简化Spring项目的开发过程,可以使用最少的配置快速创建Spring项目。 Spring Boot版本 2014年4月v1.0.0.RELEASE发布。 2.Spring Boot特性 约定优于配…...
[国产MCU]-BL602开发实例-I2C与总线设备地址扫描
I2C与总线设备扫描 文章目录 I2C与总线设备扫描1、I2C介绍2、I2C驱动API介绍3、I2C使用实例I2C (Inter-Intergrated Circuit)是一种串行通讯总线,使用多主从架构,用来连接低速外围装置。 每个器件都有一个唯一的地址识别,并且都可以作为一个发送器或接收器。每个连接到总线的…...
Python Opencv实践 - 图像平移
import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)#图像平移 #cv.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) # M是仿射变换矩阵,对于平移来说M是一…...
易服客工作室:WordPress 6.3性能改进
随着WordPress 6.3发布,本文总结了该版本的性能改进。虽然WordPress 6.2显著提高了Core的加载时间性能,树立了很高的标准,但WordPress 6.3性能改进已经超越了这些结果:根据进行的性能基准测试,与WordPress 6.2相比&…...
LeetCode 周赛上分之旅 #39 结合中心扩展的单调栈贪心问题
⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度…...
山东布谷科技直播软件开发WebRTC技术:建立实时通信优质平台
在数字化的时代,实时通信成为了人们远程交流的主要方式,目前市场上也出现了很多带有实时通信交流的软件,实时通信符合人们现在的需求,所以在直播软件开发过程中,开发者也运用了实时通信技术为直播软件加入了实时通信的…...
Golang-语言源码级调试器 Delve
前言 Go 目前的调试器有如下几种: GDB 最早期的调试工具,现在用的很少。LLDB macOS 系统推荐的标准调试工具,单 Go 的一些专有特性支持的比较少。Delve 专门为 Go 语言打造的调试工具,使用最为广泛。 本篇简单说明如何使用 Del…...
Mac鼠标滚轮优化终极指南:用Mos实现触控板级平滑体验
Mac鼠标滚轮优化终极指南:用Mos实现触控板级平滑体验 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction independently fo…...
别再只跑Demo了!手把手教你用ModelScope微调GPT-3模型,打造专属古诗生成器
从Demo到实战:基于ModelScope平台微调GPT-3打造高精度古诗生成器 当你在ModelScope上跑通第一个文本生成Demo时,那种兴奋感可能持续不到三分钟——毕竟用现成模型生成"春眠不觉晓"这样的基础诗句,和真正产出符合特定风格要求的诗歌…...
题解:洛谷 B3940 [GESP样题 四级] 填幻方
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...
高效显卡配置指南:NVIDIA Profile Inspector开源工具的完整使用方案
高效显卡配置指南:NVIDIA Profile Inspector开源工具的完整使用方案 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 在游戏优化和显卡性能调校领域,NVIDIA Profile Inspector&am…...
26-4-17 数据结构作业:用栈解决迷宫问题
1.问题描述 已知一个 66 的迷宫,可将其视作在一个坐标系中,令起点 (1,1),终点 (4,4),墙:1、路:0,要求用队列实现最短路径搜索。 2.算法思路 题目要求使用队列(先进先出)…...
虚拟机基础:JVM、V8 运行机制极简科普
文章目录 前言一、先搞懂:到底什么是“虚拟机”?二、JVM:Java世界的“铁饭碗管家”2.1 JVM的整体工作流程2.2 JVM的核心结构:五大区域三大子系统2.2.1 运行时数据区(JVM的“房间布局”)2.2.2 三大核心子系统…...
优思学院:QA, QC, QE, QS是什么?有什么区别吗?
QA,QC,QE,QS是在工业企业中常见的质量管理架构中的分工方式。 QA是Quality Assurance,是质量保证的人员,也可叫作品保人员,主要职责保证过程(Process)、方法(Method&…...
当Copilot写出恶意反序列化代码时——智能代码生成安全风险评估的“黄金45分钟”响应协议(含SAST+DAST+LLM-Sandbox三重验证机制)
第一章:当Copilot写出恶意反序列化代码时——智能代码生成安全风险评估的“黄金45分钟”响应协议(含SASTDASTLLM-Sandbox三重验证机制) 2026奇点智能技术大会(https://ml-summit.org) 当开发者在IDE中键入// Deserialize untrusted JSON pa…...
AISQL生成不是噱头,是生产力革命:37个真实生产环境SQL生成失败案例全复盘
第一章:AISQL生成不是噱头,是生产力革命:37个真实生产环境SQL生成失败案例全复盘 2026奇点智能技术大会(https://ml-summit.org) 在金融、电商与SaaS平台的37个线上生产系统中,我们对主流AISQL工具(含LangChainLlama…...
职业瓶颈突破:测试工程师转型管理
从技术深潜到管理航向在软件质量保障领域深耕多年后,许多优秀的测试工程师都会面临一个共同的职业十字路口:是继续沿着技术专家的路径纵向钻研,还是转向管理岗位,开启更广阔的职业视野?对于不少从业者而言,…...
