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 流中通常是流中每个数据),决定可引用的类;
  • 后续参数:需与被引用方法的形参完全一致;无后续参数则被引用方法为无参方法。
相关推荐
CV-Climber11 小时前
检索技术的实际应用
人工智能·算法
hhzz12 小时前
Tiger AI Platform平台中增加人脸识别功能
图像处理·人工智能·算法·计算机视觉·大模型
莫逸风13 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
从零开始的代码生活_13 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
C^h13 小时前
python函数学习
人工智能·python·机器学习
Fanta丶13 小时前
4.Python set()集合、dict(字典、映射)、 数据容器的通用功能
python
决战灬13 小时前
langgraph之interrupt(理论篇)
人工智能·python·agent
TsingtaoAI13 小时前
3D高斯泼溅技术发展及其在具身智能领域的应用综述
人工智能·算法·ai·具身智能·高斯泼溅
atunet13 小时前
关于图算法中的连通分量检测与最小割问题7
算法
z1234567898613 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程