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 流中通常是流中每个数据),决定可引用的类;
  • 后续参数:需与被引用方法的形参完全一致;无后续参数则被引用方法为无参方法。
相关推荐
untE EADO3 分钟前
Tomcat的server.xml配置详解
xml·java·tomcat
m0_716430073 分钟前
Redis如何处理预热失效引起的开局雪崩
jvm·数据库·python
m0_377618235 分钟前
c++文件锁使用方法 c++如何实现多进程文件同步
jvm·数据库·python
gmaajt10 分钟前
mysql多字段搜索如何设计组合索引_mysql索引查询加速
jvm·数据库·python
2301_7775993710 分钟前
MySQL如何快速排查慢查询安全隐患_分析slow_query_log进行优化
jvm·数据库·python
ictI CABL12 分钟前
Tomcat 乱码问题彻底解决
java·tomcat
m0_7478545213 分钟前
如何检测受保护链接(如 Twitter)的可访问性
jvm·数据库·python
baidu_3409988214 分钟前
宝塔面板如何设置网站访问密码_配置Nginx认证保护目录
jvm·数据库·python
敖正炀14 分钟前
DelayQueue 详解
java
2301_7775993718 分钟前
Python闭包是什么_深入理解Python闭包原理与变量作用域
jvm·数据库·python