Java学习_18_Stream流

文章目录

  • 前言
  • 一、不可变集合
  • 二、Stream流
    • 思想
    • 第一步:得到Stream流
    • 第二步:Stream流的中间方法
    • Stream流的终结方法
  • 总结


前言

博客仅记录个人学习进度和一些查缺补漏。
学习内容:BV17F411T7Ao


一、不可变集合

不可变集合就是长度和内容都不可变的集合

在这里插入图片描述
即直接使用静态方法来创建
在这里插入图片描述
例如:
在这里插入图片描述
在这里插入图片描述
set没有索引,只能通过迭代器或增强for来遍历
并且set集合元素是唯一的,可以用来去重,同时在获取静态set时,要注意其中不可以有重复元素

list和set的of方法底层是可变参数

在这里插入图片描述
细节1:键是不能重复的。
细节2:静态map中最多只能传入10个元素。
map的传入参数都是写死的,做多只有10个,因为想要传入多个不确定数量的键和值,就需要传入键和值两个可变参数,但是可变参数只能只有一个
在这里插入图片描述
细节3:如果需要传递多个可变的键值对,可以直接传入entry对象
(默认使用hashmap)
但是需要注意entry实际上是map的内部类,我们需要先创建一个普通的map集合,然后将其中的entry使用toArry方法转换成一个数组。
在这里插入图片描述
在这里插入图片描述
简化版:
在这里插入图片描述
极简版:
在这里插入图片描述
注意,copyof方法在JDK10以上才能使用。

二、Stream流

思想

stream流就是将数据变成一个流水线上的对象(创造一个流水线),然后依次对其进行操作处理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一步:得到Stream流

在这里插入图片描述

        //获取单列集合的steam流ArrayList<String> arrayList = new ArrayList<>();Collections.addAll(arrayList, "a", "b", "c", "d","e");//获取一条流水线,并把集合放上去Stream<String> stream = arrayList.stream();//直接打印看看,结果是地址值System.out.println(stream);//java.util.stream.ReferencePipeline$Head@776ec8df//使用循环打印stream.forEach(new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}});//简化版本arrayList.stream().forEach(s -> System.out.println(s));//获取双列集合的steam流HashMap<String, String> hashMap = new HashMap<>();//添加数据hashMap.put("a", "1");hashMap.put("b", "2");hashMap.put("c", "3");hashMap.put("d", "4");hashMap.put("e", "5");//获取stream流,注意,map是双列集合,不能直接获取stream流,需要分开成键流和值流hashMap.keySet().stream().forEach(s-> System.out.println(s));//获取数组的steam流int[] nums = {1,2,3,4,5,6,7,8,9,0};//使用Arrays工具类转换成stream流Arrays.stream(nums).forEach(s-> System.out.println(s));//获取零散数据的steam流Stream.of(1,2,3,4,5).forEach(s-> System.out.println(s));

细节:of方法内如果传入的是一个数组变量,最后打印出来的会是该变量的地址值,此时认为传入steam的是该数组变量的地址。

第二步:Stream流的中间方法

在这里插入图片描述
例如:过滤方法
在这里插入图片描述
简写为:
在这里插入图片描述
注意,中间过程(如过滤)不会对原数据产生任何影响。
limit和skip方法:
在这里插入图片描述
去重方法:底层依赖hashcode和equals方法,所以对于自定义类型时需要重写这两个方法。
在这里插入图片描述
在这里插入图片描述

数据类型转换方法:map
在这里插入图片描述
在这里插入图片描述

Stream流的终结方法

v
终结方法的返回值一般是void
在这里插入图片描述
在这里插入图片描述
将数据收集进数组中:
在这里插入图片描述
注意,这是一个函数式方法,其中参数需要是一个具体类型的数组,改写后如下:
在这里插入图片描述
lambda表达式形式:其中value为数组化后数组大小
在这里插入图片描述

将数据收集进集合中:

在这里插入图片描述

在这里插入图片描述
set和list最大的区别是set不可重复(如果出现了重复会自动去重)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:在收集到map中时,不可以使用重复的键,即不存在覆盖功能。
lambda表达式形式:
在这里插入图片描述

总结

流的出现让数据处理从几十行代码缩减到一两行就能实现,简化了很多集合数组的操作。
在这里插入图片描述

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

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

相关文章

希尔排序,详细解析(附图解)

1.希尔排序思路 希尔排序是一种基于插入排序的算法&#xff0c;通过将原始数据分成若干个子序列&#xff0c;然后对子序列进行插入排序&#xff0c;逐渐减小子序列的间隔&#xff0c;最后对整个序列进行一次插入排序。 1.分组直接插入排序&#xff0c;目标接近有序--------…

C语言贪吃蛇之BUG满天飞

C语言贪吃蛇之BUG满天飞 今天无意间翻到了大一用C语言写的贪吃蛇&#xff0c;竟然还标注着BUG满天飞&#xff0c;留存一下做个纪念&#xff0c;可能以后就找不到了 /* 此程序 --> 贪吃蛇3.0 Sur_流沐 当前版本&#xff1a; Bug满天飞 */ #include<stdio.h> #includ…

【补充篇】AUTOSAR多核OS介绍(下)

文章目录 前文回顾1 AUTOSAR OS1.1 AUTSOAR OS元素1.1.1 操作系统对象1.1.2 操作系统应用程序1.1.3 AUTOSAR OS裁剪类型1.1.4 AUTOSAR OS软件分区1.2 AUTOSAR OS自旋锁1.3 AUTOSAR OS核间通信1.4 AUTOSAR OS多核调度前文回顾 在上篇文章【补充篇】AUTOSAR多核OS介绍(上)中,…

OpenMax算法详解:深度学习中的高效开集识别技术

OpenMax算法详解&#xff1a;深度学习中的高效开集识别技术 在深度学习领域&#xff0c;模型的识别能力往往受限于其训练数据集的范畴。传统的分类模型&#xff0c;如卷积神经网络&#xff08;CNN&#xff09;或循环神经网络&#xff08;RNN&#xff09;&#xff0c;通常被设计…

算法5:位运算

文章目录 小试牛刀进入正题 没写代码的题&#xff0c;其链接点开都是有代码的。开始前请思考下图&#xff1a; 小试牛刀 位1的个数 class Solution { public:int hammingWeight(int n) {int res 0;while (n) {n & n - 1;res;}return res;} };比特位计数 class Solution…

关于我的生信笔记开通《知识星球》

关于知识星球 1. 为什么到现在才开通《知识星球》 从很早关注我的同学应该了解小杜的知识分享历程&#xff0c;小杜是从2021年11月底开始进入此“坑”&#xff0c;一直坚持到现在&#xff0c;马上3年了&#xff08;24年11月底到期&#xff09;。自己也从一个小青年&#xff0…

查看U盘的具体信息,分区表格式、实际容量和分区状态

查看U盘的具体信息&#xff0c;分区表格式、实际容量和分区状态 前言&#xff1a; 利用windows自带的命令行窗口就可以 1、使用命令提示符查看MBR和GPT分区类型 &#xff08;1&#xff09;按“Windows R”键&#xff0c;在弹出的运行对话框中输入“diskpart”&#xff0c;并按…

redis面试(十九)读写锁ReadLock

读写锁ReadLock 简单来说就是互斥锁和非互斥锁。多个客户端可以同事加的锁叫读锁&#xff0c;只能有一个客户端加的锁叫写锁。这个理论应该是从数据库中来的&#xff0c;放在这里也是同样的解释。 多个客户端同时加读锁&#xff0c;是不会互斥的&#xff0c;多个客户端可以同…

YOLOv8_det/seg/pose/obb推理流程

本章将介绍目标检测、实例分割、关键点检测和旋转目标检测的推理原理,基于onnx模型推理,那么首先就需要了解onnx模型的输入和输出,对输入的图片需要进行预处理的操作,对输出的结果需要进行后处理的操作,这部分内容在我的另一个专栏《YOLOv8深度剖析》中也有介绍,如果对YO…

canal数据同步工具介绍与应用

canal服务 canal介绍canal版本与环境canal 服务集canal应用场景&#xff1a; canal常见问题xml配置问题连接认证问题jar版本问题连接问题 canal介绍 ‌1、Canal是‌阿里巴巴开源的‌MySQL增量数据订阅和消费工具&#xff0c;通过模拟MySQL的‌slave与‌master交互&#xff0c;捕…

一文搞懂微服务架构之降级

前置知识 比如双十一之类的大促高峰&#xff0c;平台是会关闭一些服务的&#xff0c;比如退款服务。这就是降级的典型应用&#xff0c;不过它是一种手动的跨服务降级&#xff0c;对于整个系统来说&#xff0c;提供了一部分服务&#xff0c;但是没有提供另外一部分服务&#xf…

InternLM2_PracticalCamp_L2_task3_LMDeploy量化部署进阶实践

1 配置LMDeploy环境 1.1 InternStudio开发机创建与环境搭建 点选开发机&#xff0c;自拟一个开发机名称&#xff0c;选择Cuda12.2-conda镜像。 我们要运行参数量为7B的InternLM2.5&#xff0c;由InternLM2.5的码仓查询InternLM2.5-7b-chat的config.json文件可知&#xff0c;…

数据库多表设计:深入理解一对多、一对一、多对多关系 【后端 12】

数据库多表设计&#xff1a;深入理解一对多、一对一、多对多关系 在数据库设计中&#xff0c;表之间的关系决定了如何组织和存储数据。常见的表关系包括一对多、一对一和多对多。在不同的业务场景下&#xff0c;我们会选择不同的关系模式进行数据库设计。本文将通过具体案例介绍…

企业高性能web服务器

目录 一、web服务介绍 1.1 Web 服务访问流程 1.2 Web 服务器类型 1.3 Apache常用工作模式 1.3.1 Apache prefork 模型 1.3.2 Apache worker 模型 1.3.3 Apache event 模型 【补充】 子进程角色主要负责以下&#xff1a; 二、Nginx 架构和安装 2.1 Nginx 编译安装示例…

Maven的依赖范围

依赖的jar包&#xff0c;默认情况下&#xff0c;可以在任何地方使用&#xff0c;可以通过scope来设置作用范围 作用范围&#xff1a; 主程序范围有效&#xff08;main文件夹范围内&#xff09;测试程序范围有效&#xff08;test文件夹范围内&#xff09;是否参与打包运行&…

投资伦敦银一般看什么点位做单?

伦敦银的价格走势不断变化&#xff0c;无论投资者选择做多还是做空&#xff0c;进场的点位都不是一成不变的&#xff0c; 如果投资者想找到胜率比较高的进场点位&#xff0c;可以尝试在走势图中找出银价的支撑与压力位所在&#xff0c;然后在压力位附近布局空单&#xff0c;在…

fastadmin 安装

环境要求&#xff0c;大家可以参考官方文档的&#xff0c;我这里使用的是phpstudy&#xff0c;很多已经集成了。 注意一点&#xff0c;PHP 版本&#xff1a;PHP 7.4 。 第二步&#xff1a;下载 下载地址&#xff1a;https://www.fastadmin.net/download.html 进入下载地址后…

SpringBoot依赖之Spring Data Redis 实现地理坐标(Geospatial)

Spring Boot 项目中使用 Spring Data Redis 实现地理坐标(Geospatial) 概念 Spring Data Redis (AccessDriver) 依赖名称: Spring Data Redis (AccessDriver)功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous, and reactive usage. Sup…

如何制作统信UOS启动盘?

如何制作统信UOS启动盘&#xff1f; 一、下载UOS系统安装镜像二、在UOS系统环境下制作启动盘步骤一&#xff1a;准备U盘步骤二&#xff1a;打开启动盘制作工具步骤三&#xff1a;选择ISO镜像文件步骤四&#xff1a;选择安装介质并格式化步骤五&#xff1a;等待制作完成 三、在W…

Redis 技术详解

一、Redis 基础 &#xff08;一&#xff09;为什么使用 Redis 速度快&#xff0c;因为数据存在内存中&#xff0c;类似于 HashMap&#xff0c;查找和操作的时间复杂度都是 O(1)。支持丰富数据类型&#xff0c;支持 string、list、set、Zset、hash 等。支持事务&#xff0c;操…