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 流中通常是流中每个数据),决定可引用的类;
  • 后续参数:需与被引用方法的形参完全一致;无后续参数则被引用方法为无参方法。
相关推荐
weixin_449290014 分钟前
Elasticsearch各版本特性对比
java·大数据·elasticsearch
计算机安禾4 分钟前
【数据结构与算法】第20篇:二叉树的链式存储与四种遍历(前序、中序、后序、层序)
c语言·开发语言·数据结构·c++·学习·算法·visual studio
_MyFavorite_9 分钟前
JAVA重点基础、进阶知识及易错点总结(17)线程安全 & synchronized 同步锁
java·开发语言·安全
_MyFavorite_10 分钟前
JAVA重点基础、进阶知识及易错点总结(13)File 类 + 路径操作
java·开发语言
Lyyaoo.10 分钟前
Spring Boot自动配置
java·spring boot·后端
GinoWi11 分钟前
Chapter 8 Python中的类
python
Thomas.Sir14 分钟前
第六章:RAG知识库开发之【深入浅出RAG使用效果评估:从指标到实践】
人工智能·python·ai·rag·效果评估
菜菜的顾清寒17 分钟前
力扣HOT100(16)除了自身以外数组的乘积
算法·leetcode·职场和发展
sali-tec17 分钟前
C# 基于OpenCv的视觉工作流-章45-圆卡尺
图像处理·人工智能·opencv·算法·计算机视觉
禾小西22 分钟前
深入理解 Java String:从底层原理到高性能优化实战
java·开发语言·性能优化