Stream流 学习笔记

为了提高程序员对数组和集合的操作便利性而推出的操作--Stream流

1.流的创建

数组用Arrays.stream(数组名)来获取流

集合用集合.stream()来获取流

String [] strings;
List list =new ArrarList<>();
//数组
stream =Arrays.stream(strings)
//集合
stream =list.stream();

2.操作流

1)过滤

调用filter可以过滤出流中符合条件的元素,filter方法参数可以支持一个Lambda表达式

 List<String> list =new ArrayList<>();list.add("宁舒意");list.add("周杰伦");list.add("薛之谦");//过滤出包含”宁“的元素Stream<String> stream =list.stream().filter(e->e.contains("宁"));stream.forEach(System.out::println);

stream.forEach(System.out::println);

这行代码解读一下,forEach就是遍历流的所有元素,类名::方法就相当于调用类中的方法。

这行代码就是对于流中的每个元素都调用一次啊这个输出方法,元素就是输出的参数

2)映射

map()方法就是将流中所有元素按照map方法参数中的规则转换成新的流中的元素。

 /*** 映射,将流中每个元素都按照map()括号里面的规则进行转换,但是原来的流不变,只是创建新流**/private static void f3(){List<String> list =new ArrayList<>();list.add("宁舒意");list.add("周杰伦");list.add("薛之谦");//这里map里面的参数表示调用String的legth方法,即返回每个字符串的长度Stream<Integer> stream =list.stream().map(String::length);stream.forEach(System.out::println);}

3)匹配

匹配,判断该流是否符合条件

stream.anyMatch()有一个元素匹配,就返回true

stream.allMatch()全部匹配,才返回true

stream.noneMatch()全部不匹配,才返回true

/*** 匹配**/private static void f4(){List<String> list =new ArrayList<>();list.add("宁舒意");list.add("周杰伦");list.add("薛之谦");//只要有一个元素匹配条件,就返回trueboolean anyMatch =list.stream().anyMatch(e->e.contains("宁"));//必须全部匹配,才返回trueboolean allMatch =list.stream().allMatch(e->e.contains("宁"));//全部不匹配,才返回trueboolean noneMatch =list.stream().noneMatch(e->e.contains("宁"));}

4)组合

组合就是调用reduce()方法将流中的元素按照reduce()方法参数定义的Lambda规则都组合起来,比如:将六种所有元素都加起来。

reduce((a,b)-> a+b)

也可以设置一个起始值放在第一个参数:reduce(6,(a,b)-> a+b) ,这会将流中所有元素都加起来再加6。

/*** 组合**/private static void f5(){Integer[] ints ={0,1,2,3};List<Integer> list =Arrays.asList(ints);//reduce方法的参数可以接受一个lambda表达式Optional<Integer> optional1 =list.stream().reduce((a,b)->a+b);Optional<Integer> optional2 =list.stream().reduce(Integer::sum);System.out.println(optional1.orElse(0));System.out.println(optional2.orElse(0));int reduce =list.stream().reduce(6,(a,b)->a+b);System.out.println(reduce);int reduce1 =list.stream().reduce(6,Integer::sum);System.out.println(reduce1);}

5)转换流

可以把流转换回数组或者集合,collect()

stream.toArray,可以将流转换成数组

private static void f6(){List<String> list =new ArrayList<>();list.add("宁舒意");list.add("周杰伦");list.add("薛之谦");//将集合转换成stream流,再调用toArray方法转换成数组String[] strings =list.stream().toArray(String[]::new);List<Integer> list1 =list.stream().map(String::length).collect(Collectors.toList());List<String> list2 =list.stream().collect(Collectors.toCollection(ArrayList::new));System.out.println(list1);System.out.println(list2);String str =list.stream().collect(Collectors.joining(",")).toString();System.out.println(str);}

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

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

相关文章

交易之路:如何找到适合自己的交易品种

大部分新手交易者最容易陷入的误区就是盲目跟风&#xff0c;他们倾向于选择那些被众人追捧且看似成功的交易品种&#xff0c;认为既然大家都在做&#xff0c;那么一定有利可图。然而&#xff0c;他们忽略了交易品种选择的核心原则&#xff1a;基于个人的深入测试与理解&#xf…

深度解析:等保测评中的常见漏洞与防护措施

等保测评&#xff08;信息安全等级保护测评&#xff09;是指根据中国的网络安全法规&#xff0c;对信息系统进行安全等级保护的评估过程。在这个过程中&#xff0c;发现系统中的安全漏洞并采取有效的防护措施至关重要。本文将深度解析等保测评中的常见漏洞及其相应的防护措施。…

程序设计基础I-单元测试2(机测)

7-1 sdut-C语言实验-AB for Input-Output Practice (不确定次数循环) Your task is to Calculate a b. Too easy?! Of course! I specially designed the problem for all beginners. You must have found that some problems have the same titles with this one, yes, a…

微信小程序中的文件查看方法

获得后缀名判断类型,如果是图片用ex.previewImage(),如果是视频,用uni.previewMedia(),如果是word文档这些的,用 uni.downloadFile来下载资源后用 uni.saveFile来保存到本地,uni.openDocument来打开新的网页,如果打不开的话则返回说到PC端去打开 const lookFile (url) > {l…

传统企业营销新起点:百科词条构建基础策略!

合作咨询联系竑图 hongtu201988 搜索你的企业名称&#xff0c;出现的结果是什么&#xff1f;是否大部分都是信用网站的基础注册信息&#xff1f;没有正面的企业形象展示&#xff1f; 如果企业做了百度词条呢&#xff1f;会是一个什么结果呢&#xff1f; 以上两种结果带给大家的…

百度智能云千帆 ModelBuilder 大模型服务及开发解读

本文整理自百度云智峰会 2024 —— 大模型平台技术实践论坛的同名演讲。 更多大会演讲内容&#xff0c;请访问&#xff1a; https://cloud.baidu.com/summit/AIcloudsummit_2024/index.html 最近大模型产业应用圈子里有一句非常流行的话&#xff0c;叫做度日如年。不是说这件…

GIS_地理空间数据_坐标系统

文章目录 一、1. 二、 一、 1. 二、

自动化检查网页的TDK,python+selenium自动化测试web的网页源代码中的title,Description,Keywords

首先&#xff0c;TDK是什么&#xff1f;对于新手小白来说&#xff0c;可能是懵逼的&#xff0c;所以这里给出一个官方的解说‌网页的TDK是指标题&#xff08;Title&#xff09;、描述&#xff08;Description&#xff09;和关键词&#xff08;Keywords&#xff09;的集合‌。这…

【服务器】服务器 BMC(基板管理控制器,Baseboard Management Controller)

基板管理控制器&#xff08;BMC&#xff0c;Baseboard Management Controller&#xff09;是用于监控和管理服务器的专用控制器&#xff0c;用通俗的话讲&#xff0c;BMC 是主机服务器系统下的一个独立系统。这个独立系统有自己的处理器和内存&#xff0c;即使主机硬件或操作系…

开源限流组件分析(一):juju/ratelimit

文章目录 本系列前言数据结构对外提供接口初始化令牌桶获取令牌 核心方法adjustavailableTokenscurrentTicktakeTakeAvailableWait系列 本系列 开源限流组件分析&#xff08;一&#xff09;&#xff1a;juju/ratelimit&#xff08;本文&#xff09;开源限流组件分析&#xff0…

Race Track Generator Ultimate:Race Track Generator(赛车场赛道看台场景创建工具)

下载&#xff1a;​​Unity资源商店链接资源下载链接 效果图&#xff1a;

【论文阅读】Bi-Mamba+: Bidirectional Mamba for Time Series Forecasting

文章目录 概要阅读背景知识引言创新之处 研究方法概述方法部分的核心模块多尺度打补丁&#xff08;Multi-Scale Patching&#xff09;Mamba&#xff1a;全局模式专家Local Window Transformer&#xff08;LWT&#xff09;&#xff1a;局部变化专家长短期路由器&#xff08;Long…

Bootstrap Blazor实现多个Select选择器联合选择

Bootstrap Blazor官方目前只提供单个Select选择器&#xff0c;如果要想实现下图所示的多个Select选择器联合选择&#xff0c;则需要通过编写自定义组件来实现。 主要通过Bootstrap的data-bs-toggle属性来实现展开和折叠效果。 .razor文件内容如下&#xff1a; typeparam TValu…

Rust语法基础

注释 所有的开发者都在努力使他们的代码容易理解,但有时需要额外的解释。在这种情况下,开发者在他们的源码中留下注释,编译器将会忽略掉这些内容,但阅读源码的人可能会发现有用。 和大多数的编程语言一样,主要有一下两种: 单行注释 // 多行注释 /* */ 基本数据类型 Ru…

【路径规划】蚁群算法的优化计算——旅行商问题(TSP)优化

摘要 旅行商问题&#xff08;TSP&#xff09;是一种经典的组合优化问题&#xff0c;其目标是找到一条遍历所有城市且总路程最短的环路。由于其计算复杂度高&#xff0c;求解大规模TSP问题往往依赖于启发式算法。本文研究了基于蚁群算法&#xff08;Ant Colony Optimization, A…

2024.10.19小米笔试题解

第一题数独计数 考虑dfs遍历所有情况 n = int(input())def check(grid, x, y, v):dx = [1, 0, -1, 0]dy = [0, 1, 0, -1]for i in range(4):nx, ny = x + dx[i], y + dy[i]if 0 <= nx < 3 and 0 <= ny < 3:if grid[nx][ny] == 0:continueif abs(grid[nx][ny] - v…

034_基于php万怡酒店管理系统

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

python之数据结构与算法(数据结构篇)-- 字典

一、字典的概念 这里我使用“小羊们”举例子&#xff0c;现在我需要去创建一个"羊村小羊们的身高"字典去保存小羊们的身高&#xff0c;对小羊们的身高进行查询、增加、删除、遍历等一系列操作。去更好的理解&#xff0c;字典是个什么东东&#xff01;&#xff01;&…

Java根据word 模板,生成自定义内容的word 文件

Java根据word 模板&#xff0c;生成自定义内容的word 文件 背景1 使用技术2 实现方法依赖啊 3 问题4 背景 主要是项目中需要定制化一个word&#xff0c;也就是有一部分是固定的&#xff0c;就是有一个底子&#xff0c;框架&#xff0c;里面的内容是需要填充的。然后填充的内容…

Qt中的Base64编码

Qt中的Base64编码 Qt之Base64编解码 Base64编码是一种用于表示二进制数据的文本编码方式&#xff0c;通常用于在需要通过文本传输二进制数据的场景中&#xff0c;比如在电子邮件和URL中传递数据。它将二进制数据转换为由64个ASCII字符组成的字符串&#xff0c;便于在文本环境中…