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

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

背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。SolidUI 是一个创新的项目&#xff0c;旨在将自然语言处理&#xff08;NLP&#xff09;与计算机图形学相…...

Spring MVCSpring Boot

文章目录 Spring MVC什么是MVC模式Spring MVC优点SpringMVC 运行流程SpringMVC组件SpringMVC常用的注解有哪些SpringMVC的拦截器和过滤器有什么区别&#xff1f;执行顺序是什么 SpringBoot对SpringBoot的理解Spring和SpringBoot的关系&#xff1f;SpringBoot有哪些核心注解Spri…...

01-集群安装JDK(普通用户)

机器部署 集群规划 我们准备三台服务器kk01、kk02、kk03&#xff0c;内存4G、硬盘50G、处理器4核心2内核&#xff08;总8&#xff09; kk01使用 192.168.188.128 kk02使用 192.168.188.129 kk03使用 192.168.188.130 模板机准备 我们先创建一台作为模板机&#xff0c;后…...

小龟带你妙写排序之选择排序

选择排序 一. 原理二. 题目三. 思路分析四. 代码 一. 原理 选择排序(Selection-sort)是一种简单直观的排序算法。 工作原理&#xff1a;首先在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未…...

深入解析 SOCKS5 代理及其在网络安全与爬虫中的应用

在当今数字化时代&#xff0c;网络安全和数据获取成为了互联网时代的重要课题。为了实现安全的网络连接和高效的数据采集&#xff0c;各种代理技术应运而生。本文将深入探讨 SOCKS5 代理及其在网络安全和爬虫领域的应用&#xff0c;同时比较其与其他代理方式的优势与劣势。 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

近年来&#xff0c;安全问题备受关注&#xff0c;特别是涉及气体泄漏的危险场景。 为了进一步增强气体检测仪的安全功能&#xff0c;市面上便研发出了一款有害气体报警器&#xff0c;并采用WT588F02B-8S语音提示芯片为元器件&#xff0c;为产品赋予更多声音&#xff0c;更多警示…...

gdb 调试汇编

starti 从第一条指令开始执行并停止. nexti 执行完当前指令; 当前指令可能是call一个函数, 但是仍然下一条指令才停止; stepi 下一条指令, 如果跳转也跟着跳转; 查看寄存器值 info registers 查看通用寄存器 info registers {register_name ...}指定寄存器的值 info reg…...

WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制

WebRTC音视频通话-新增或修改SDP中的码率Bitrate限制参数 之前搭建ossrs服务&#xff0c;可以查看&#xff1a;https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话&#xff0c;可以查看&#xff1a;https://blog.csdn.net/gloryFlo…...

深入理解与运用Android Jetpack ViewModel

在Android开发中&#xff0c;数据与界面的分离一直是一项重要的挑战。为了解决这个问题&#xff0c;Google推出了Android Jetpack组件之一的ViewModel。ViewModel是一种用于管理UI相关数据的架构组件&#xff0c;它能够帮助开发者实现优雅的数据驱动和生命周期管理。本文将深入…...

【数据库】P0 创建数据库环境 MySQL + DataGrip

创建数据库环境 下载安装 MySQL下载安装 DataGrip 下载安装 MySQL Windows版本_MySQL 下载地址&#xff1a; https://dev.mysql.com/downloads/mysql/ 下载后依照默认顺序安装即可&#xff0c;本博文将讲述简约安装步骤&#xff1b; 如需详细安装步骤可见&#xff1a;https:/…...

js设置css变量控制页面一行展示指定个数的元素

前置知识&#xff1a; CSS变量之var()函数的应用——动态修改样式 & root的使用 flex相关知识 场景&#xff1a; 动态设置给父元素内子元素设置每行排列几个 通过 document.body.style.setProperty(--itemNum, 5)设置样式变量&#xff0c;然后通过给父元素设置display: f…...

4.0 Spring Boot入门

1. Spring Boot概述 Spring Boot介绍 Spring Boot是Pivotal团队在2014年推出的全新框架&#xff0c;主要用于简化Spring项目的开发过程&#xff0c;可以使用最少的配置快速创建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是仿射变换矩阵&#xff0c;对于平移来说M是一…...

易服客工作室:WordPress 6.3性能改进

随着WordPress 6.3发布&#xff0c;本文总结了该版本的性能改进。虽然WordPress 6.2显著提高了Core的加载时间性能&#xff0c;树立了很高的标准&#xff0c;但WordPress 6.3性能改进已经超越了这些结果&#xff1a;根据进行的性能基准测试&#xff0c;与WordPress 6.2相比&…...

LeetCode 周赛上分之旅 #39 结合中心扩展的单调栈贪心问题

⭐️ 本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架&#xff0c;你的思考越抽象&#xff0c;它能覆盖的问题域就越广&#xff0c;理解难度…...

山东布谷科技直播软件开发WebRTC技术:建立实时通信优质平台

在数字化的时代&#xff0c;实时通信成为了人们远程交流的主要方式&#xff0c;目前市场上也出现了很多带有实时通信交流的软件&#xff0c;实时通信符合人们现在的需求&#xff0c;所以在直播软件开发过程中&#xff0c;开发者也运用了实时通信技术为直播软件加入了实时通信的…...

Golang-语言源码级调试器 Delve

前言 Go 目前的调试器有如下几种&#xff1a; GDB 最早期的调试工具&#xff0c;现在用的很少。LLDB macOS 系统推荐的标准调试工具&#xff0c;单 Go 的一些专有特性支持的比较少。Delve 专门为 Go 语言打造的调试工具&#xff0c;使用最为广泛。 本篇简单说明如何使用 Del…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...