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 流中通常是流中每个数据),决定可引用的类;
  • 后续参数:需与被引用方法的形参完全一致;无后续参数则被引用方法为无参方法。
相关推荐
BadBadBad__AK2 小时前
线段树维护区间 k 次方和
c++·数学·算法·stl
吃饱了得干活6 小时前
Spring Cloud Gateway 微服务网关:路由、断言、过滤器
java·spring cloud
Warson_L7 小时前
Python `Annotated` 与 LangGraph Reducer 学习笔记
python
韩师傅7 小时前
海天线算法的前世今生
python·计算机视觉
韩师傅7 小时前
当你的甲方设备过烂,要如何快速出效果?
python·计算机视觉
Warson_L7 小时前
LangGraph的MessageState and HumanMessage
python
韩师傅7 小时前
当你的甲方吐槽天空不够蓝,你应该如何应对
python·计算机视觉
lwx572808 小时前
探秘InnoDB:搞懂它的内存、线程、磁盘与日志刷盘策略
java·后端
Warson_L8 小时前
python的类&继承
python
Warson_L8 小时前
类型标注/type annotation
python