js--21

一、Stream 流核心知识点

1. 核心定位与使用步骤

  • 核心作用:结合 Lambda 表达式简化集合 / 数组的数据处理,让代码更简洁易读。
  • 使用流程
    1. 获取流:将集合 / 数组 / 零散数据放入 Stream 流(流水线);
    2. 中间操作:对流中数据进行过滤、转换等处理(返回新流,可链式调用);
    3. 终结操作:统计、打印、收集数据(调用后流关闭,不可复用)。

2. 获取 Stream 流的方式

表格

数据源类型 获取方法 示例
单列集合 Collection.stream() list.stream()
双列集合 先转单列集合再获取 map.entrySet().stream()
数组 Arrays.stream(数组) Arrays.stream(arr)
零散数据 Stream.of(数据...) Stream.of(1,2,3)

3. 常用 API 分类

(1)中间方法(返回新流,可链式调用)

表格

方法名 功能 注意事项
filter(Predicate) 过滤符合条件的元素 -
limit(long n) 获取前 n 个元素 -
skip(long n) 跳过前 n 个元素 -
distinct() 元素去重 依赖 hashCode() + equals()
concat(Stream a, Stream b) 合并两个流 静态方法
map(Function) 转换元素数据类型 -

关键特性:修改流中数据不会影响原集合 / 数组;原流只能使用一次,建议链式编程。

(2)终结方法(调用后流关闭)

表格

方法名 功能
forEach(Consumer) 遍历流中元素
count() 统计元素个数
toArray() 收集数据到数组
collect(Collector) 收集数据到集合(List/Set/Map)

二、方法引用核心知识点

1. 基础规则

  • 核心概念:复用已有方法作为函数式接口抽象方法的方法体,是 Lambda 表达式的简化写法。
  • 核心符号::(方法引用符),分隔 "类 / 对象" 与 "方法名"。
  • 使用前提
    1. 引用处必须是函数式接口(仅一个抽象方法);
    2. 被引用方法已存在,且形参 / 返回值与抽象方法一致;
    3. 被引用方法功能匹配业务需求。

2. 方法引用分类与格式

表格

引用类型 格式 示例 关键说明
静态方法 类名::静态方法名 Integer::parseInt 直接引用类的静态方法
成员方法(其他类) 对象::方法名 new StringUtil()::toUpperCase 需创建对应类的对象
成员方法(本类) this::方法名 this::print 本类中直接引用当前对象的方法
成员方法(父类) super::方法名 super::sayHello 子类中引用父类的成员方法
构造方法 类名::new Student::new 复用构造方法创建对象
类名引用成员方法 类名::成员方法名 String::substring 抽象方法第一个参数为该类类型时可用
数组构造方法 数据类型[]::new int[]::new 用于创建指定类型的数组

3. 抽象方法形参关键规则

  • 第一个参数:代表被引用方法的调用者(Stream 流中通常是流中每个数据),决定可引用的类;
  • 后续参数:需与被引用方法的形参完全一致;无后续参数则被引用方法为无参方法。
相关推荐
YatHinLay5 分钟前
Spring Boot + Calcite 实现跨库查询
java
wabs66610 分钟前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
troy12813 分钟前
Codex 安全盲区:代码漏洞生成实测
windows·python·ci/cd·pycharm·django·github·fastapi
hanlin0313 分钟前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
酷炫码神27 分钟前
MosMos 创意效果与能力边界展示
java
Wang's Blog34 分钟前
Java 接入Redis: 使用Jedis操作Redis
java·服务器·redis
事圆则缓37 分钟前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
嵌入式学习菌38 分钟前
Workbuddy自动写一个RS485 / LoRa 参数调试工具
python
shehuiyuelaiyuehao1 小时前
算法50,分治归并,数组中的逆序对
java·算法
烽学长1 小时前
(附源码)基于Springboot+vue的图书阅读分享系统的设计与实现
java·spring boot·后端