【零基础学java】(Stream流)

Stream流的使用步骤

1.先得到一条Stream流,并把数据放上去
2.使用中间方法对流水线上的数据进行操作
3.使用终结方法对流水线上的数据进行操作

单列集合

双列集合

数组

零散数据

Stream的中间方法

细节

Stream接口中静态方法of细节:方法的形参是一个可变参数,可以传递一堆零散的数据,也可以传递数组
但是数组必须是引用数据类型,如果传递基本数据类型,是会把整个数组当作以一个元素,放到Stream中

中间方法的实例:

细节

  • arr 是每次循环中创建的临时数组

  • arr[1] 是当前数组的第二个元素(单个字符串)

  • 每个字符串 "张三-23" 都会经历:分割 → 取第二部分 → 转换

  • 不是把所有年龄一次性放在 arr[1]

简单说:arr[1] 就像是一个临时变量,每次处理一个字符串时,它只保存当前字符串的年龄部分。

Stream API通过 map()forEach()filter() 等方法内部实现了循环 。传递的Function对象(或Lambda表达式)会被多次调用(集合有几个元素就调用几次),这就是"隐式循环"。

所以apply(String s) 方法会被自动调用6次(因为list有6个元素),每次s的值不同,这就是循环的效果

filter:注意点,返回新的Stream流,原来的Stream流只能使用一次,建议使用链式编程
修改Stream流中的数据,不会影响原来集合或者数组中的数据

distinct 底层依赖hashcode 和equals方法,在String类中,java已经帮我们写好了,如果是自定义的类,我们需要重写,源码中有hashSet

收集到hashSet集合中,数据会去重

Stream流的终结方法

forEach

toArray方法

// toArray()
收集流中的数据,放到数组中
//IntFunction的泛型:具体类型的数组
//apply的形参:流中数据的个数,要跟数组的长度保持一致
//apply的返回值:具体类型的数组
//方法体:就是创建数组
//toArray方法的参数的作用:负责创建一个指定类型的数组
//toArray方法的底层,会依次得到流里面的每一个数据,并把数据放到数组当中
//toArray方法的返回值:是一个装着流里面所有数据的数组

collect

List
Set
Map

toMap:参数一表示键的生成规则
*
参数二表示值的生成规则
*参数一:
Function泛型一:表示流中每一个数据的类型
泛型二:表示Map集合中键的数据类型
方法apply形参:依次表示流里面的每一个数据
方法体:生成键的代码
返回值:己经生成的键

* 参数二:
Function泛型一:表示流中每一个数据的类型
泛型二:表示Map集合中值的数据类型
方法apply形参:依次表示流里面的每一个数据
方法体:生成值的代码
返回值:己经生成的值

简化

相关推荐
程序员清风10 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林55112 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊17 小时前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing17 小时前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠1 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840821 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide1 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家1 天前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java
花花无缺1 天前
搞懂new 关键字(构造函数)和 .builder() 模式(建造者模式)创建对象
java
用户908324602731 天前
Spring Boot + MyBatis-Plus 多租户实战:从数据隔离到权限控制的完整方案
java·后端