【自用】JavaSE--Stream流

概述

获取Stream流

集合的stream流

集合名.stream( );

collection集合

List集合与Set集合都属于Collection集合,因此可以直接调用stream方法获取stream流,示例如下

结果===>

map集合

map集合存在键值对,因此无法使用该方法直接获取stream流,可以采用如下两种方法

  1. 分别将键与值装入到set集合中,再取得他们各自的stream流,对其进行操作
  2. 通过通过 map.enterySet( ) 方法将他们封装成键值对 对象,再将这些键值对都装入set集合,这样就可以使用collection集合的stream流获取方法对其进行操作了

数组的stream流

Arrays.stream(数组名)Stream.of(数组名)     两种方法均可,如下图

stream流的中间方法

调用完中间方法后返回的还是一个stream流

map方法

可以理解成一种加工操作,比如遍历的是对象,想要获取对象的名字,就可以用map方法得到名字的stream流并返回,如下

注:下图是采用方法引用简化过的,原来是  map(s -> s.getName() ),用意就是得到students对象中的所有名字

distinct方法

可以去除stream流中的重复元素,如果需要去重的是自定义对象,如同之前学习过的 去重机制 需要在该对象类中重写 equals方法 与 hashcode方法 (右键generate生成即可)

stream流的终结方法

调用终结方法后就没有stream流了

max 与 min 方法

如果需要找的最大值或最小值是一个对象,则需要对comparator重写,如下

收集stream流方法

毕竟stream流的作用就是来简化操作集合、数组的代码的,集合、数组才是开发中要使用的东西,因此经常需要将stream流的结果转换回集合或数组

收集到Collection集合

使用 collect(Collectors.toList()); 就是收集为List集合,使用 collect(Collectors.toSet()); 就是收集为Set集合,示例如下

:stream流只能收集一遍,当收集完后stream流就会关闭,因此不能取出stream流后分别收集,会报错,具体示例如下:

当第一次使用studentStream.collect之后,stream流已经被关闭了,因此第二段set收集会出错

收集到Map集合

由于不知道收集后的键与值分别取谁,因此需要进行声明,collect(Collectors.toMap( a -> 键, a -> 值 ));  示例如下,将学生的姓名作为键,学生的身高作为值

注:该方法无法帮忙去重,如果收集的对象中出现了重复的会报异常,因此最后在收集为map集合前使用 distinc( ) 去重,示例如下:

收集到数组

toArray( )  即可,示例如下:

如果想要具体声明是什么类型的数组,则需要进一步在toArray()中声明,具体如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90301.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Elasticsearch】快照与恢复功能详解

《Elasticsearch 集群》系列,共包含以下文章: 1️⃣ 冷热集群架构2️⃣ 合适的锅炒合适的菜:性能与成本平衡原理公式解析3️⃣ ILM(Index Lifecycle Management)策略详解4️⃣ Elasticsearch 跨机房部署5️⃣ 快照与恢…

技嘉z370主板开启vtx

技嘉z370vtx应该默认就是开启状态,虽然主板开启的vtx但是系统默认设置会导致vtx不能使用 1. 关闭hyper-V,Windows虚拟机监控程序平台,虚拟机平台 控制面板->程序->启用或关闭windows功能 2.以管理员身份运行CMD bcdedit /set hypervisorlaunchtype off 3.…

Springmvc的自动解管理

中央转发器&#xff08;DispatcherServlet&#xff09;控制器视图解析器静态资源访问消息转换器格式化静态资源管理一、中央转发器Xml无需配置<servlet><servlet-name>chapter2</servlet-name><servlet-class>org.springframework.web.servlet.Dispatc…

C#_定时器_解析

问题一:这里加lock是啥意思?它的原理是, 为什么可以锁住? private readonly Timer _timer;/// <summary>/// 构造函数中初始化定时器/// </summary>public FtpTransferService(){// 初始化定时器_timer new Timer(_intervalMinutes * 60 * 1000);_timer.Elapsed…

Trae开发uni-app+Vue3+TS项目飘红踩坑

前情 Trae IDE上线后我是第一时间去使用体验的&#xff0c;但是因为一直排队问题不得转战Cursor&#xff0c;等到Trae出付费模式的时候&#xff0c;我已经办了Cursor的会员&#xff0c;本来是想等会员过期了再转战Trae的&#xff0c;但是最近Cursor开始做妖了 网上有一堆怎么…

低代码中的统计模型是什么?有什么作用?

低代码开发平台中的统计模型是指通过可视化配置、拖拽操作或少量代码即可应用的数据分析工具&#xff0c;旨在帮助技术人员及非技术人员快速实现数据描述、趋势预测和业务决策。其核心价值在于降低数据分析门槛&#xff0c;使业务人员无需深入掌握统计原理或编程技能&#xff0…

Linux 下在线安装启动VNC

描述 Linux中的VNC就类似于Windows中的远程桌面系统 本文只记录在Cent OS 7的系统下在线安装VNC。 安装VNC 1、安装VNC yum install tigervnc-server2、配置VNC的密码 为用户设置 VNC 密码&#xff08;首次运行会提示输入&#xff0c;也可以提前输入&#xff09; vncpasswd密码…

支持OCR和AI解释的Web PDF阅读器:解决大文档阅读难题

支持OCR和AI解释的Web PDF阅读器&#xff1a;解决大文档阅读难题一、背景&#xff1a;为什么需要这个工具&#xff1f;问题场景解决方案二、技术原理&#xff1a;如何实现这些功能&#xff1f;1、核心技术组件2、工作流程3、关键点三、操作指南1、环境准备2、生成Html代码3、We…

研发过程都有哪些

产品规划与定义 (Product Planning & Definition) 在详细的需求调研之前&#xff0c;通常会进行市场分析、竞品分析、确立产品目标和核心价值。这个阶段决定了“我们要做什么”以及“为什么要做”。 系统设计与架构 (System & Architectural Design) 这是开发的“蓝图”…

旧物回收小程序系统开发——开启绿色生活新篇章

在当今社会&#xff0c;环保已经成为全球关注的焦点话题。随着人们生活水平的提高&#xff0c;消费能力不断增强&#xff0c;各类物品的更新换代速度日益加快&#xff0c;大量旧物被随意丢弃&#xff0c;不仅造成了资源的巨大浪费&#xff0c;还对环境产生了严重的污染。在这样…

UE5 UI 水平框

文章目录slot区分尺寸和对齐方式尺寸&#xff1a;自动模式尺寸&#xff1a;填充模式对齐常用设置所有按钮大小一致&#xff0c;不受文本影响靠右排列和unity的HorizontalLayout不太一样slot 以在水平框中放入带文字的按钮为例 UI如下布置 按钮的大小受slot的尺寸、对齐和内部…

【Golang】Go语言变量

Go语言变量 文章目录Go语言变量一、Go语言变量二、变量声明2.1、第一种声明方式2.2、第二种声明方式2.3、第三种声明方式2.4、多变量声明2.5、打印变量占用字节一、Go语言变量 变量来源于数学&#xff0c;是计算机语言中能存储计算结果或能表示值抽象的概念变量可以通过变量名…

Qt WebEngine Widgets的使用

一、Qt WebEngine基本概念Qt WebEngine中主要分为三个模块&#xff1a;Qt WebEngine Widgets模块&#xff0c;主要用于创建基于C Widgets部件的Web程序&#xff1b;Qt WebEngine模块用来创建基于Qt Quick的Web程序&#xff1b;Qt WebEngine Core模块用来与Chromeium交互。网页玄…

【C++】标准模板库(STL)—— 学习算法的利器

【C】标准模板库&#xff08;STL&#xff09;—— 学习算法的利器学习 STL 需要注意的几点及 STL 简介一、什么是 STL&#xff1f;二、学习 STL 前的先修知识三、STL 常见容器特点对比四、学习 STL 的关键注意点五、STL 学习路线建议六、总结七、下一章 vector容器快速上手学习…

YOLO算法演进综述:从YOLOv1到YOLOv13的技术突破与应用实践,一文掌握YOLO家族全部算法!

引言&#xff1a;介绍目标检测技术背景和YOLO算法的演进意义。YOLO算法发展历程&#xff1a;使用阶段划分方式系统梳理各代YOLO的技术演进&#xff0c;包含早期奠基、效率优化、注意力机制和高阶建模四个阶段。YOLOv13的核心技术创新&#xff1a;详细解析HyperACE机制、FullPAD…

快速将前端得依赖打为tar包(yarn.lock版本)并且推送至nexus私有依赖仓库(笔记)

第一步创建js文件 文件名为downloadNpmPackage.jsprocess.env.NODE_TLS_REJECT_UNAUTHORIZED "0";const fs require("fs"); const path require("path"); const request require("request");// 设置依赖目录 const downUrl "…

Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(结)

Unity VS Unreal Engine &#xff0c;“电影像游戏的时代” 新手如何抉择引擎&#xff1f;(1)-CSDN博客 这是我的上一篇文章&#xff0c;如果你仍然困惑选择引擎的事情&#xff0c;我们不妨从别的方面看看 注意&#xff1a;我们可能使用"UE5"来表示Unreal Engine系…

EVAL长度限制突破方法

EVAL长度限制突破方法 <?php $param $_REQUEST[param]; If (strlen($param) < 17 && stripos($param, eval) false && stripos($param, assert) false) //长度小于17&#xff0c;没有eval和assert关键字 {eval($param); } //stripos — 查找字符串…

Linux部署.net Core 环境

我的环境 直接下载安装就可以了 wget https://builds.dotnet.microsoft.com/dotnet/Sdk/8.0.315/dotnet-sdk-8.0.315-linux-x64.tar.gzmkdir -p $HOME/dotnet && tar zxf dotnet-sdk-8.0.315-linux-x64.tar.gz -C $HOME/dotnet export DOTNET_ROOT$HOME/dotnet expor…

ARM-定时器-PWM通道输出

学习内容需求点亮4个灯&#xff0c;采用pwm的方式。定时器通道引脚AFLED序号T3CH0PD12AF2LED5CH1PD13AF2LED6CH2PD14AF2LED7CH3PD15AF2LED8实现LED5, LED6, LED7, LED8呼吸灯效果通用定时器多通道点亮T3定时器下的多个通道的灯。开发流程添加Timer依赖初始化PWM相关GPIO初始化P…