stream——不存储数据、不修改源、惰性求值、不可重用;分中间操作(filter/map/flatmap/sorted/distinct/limit/skip)和终止操作(collect/foreach/count/findxxx/match/reduce);辅以创建方式、并行流及常见陷阱。

画 Java Stream API 的思维导图,核心是抓住“数据流 + 操作链 + 终止动作”这条主线,按功能分类组织关键接口、常用方法和典型用法,避免堆砌所有 API,突出高频、易错、有代表性的部分。
一、中心节点:Stream 是什么
思维导图的根节点建议写 Stream
- “不存储数据” → 强调它只是视图,背后仍是 List/Array/Collection 等源
- “不修改源” → filter/map 等中间操作不会改变原集合(区别于 Collection 的 removeIf)
- “惰性求值” → 只有遇到终止操作(如 collect、forEach、count)才真正执行整条链
- “不可重用” → 一次消费后再次调用会抛 IllegalStateException,需重新获取 Stream
二、两大分支:中间操作 vs 终止操作
这是导图最核心的二级结构,建议左右分列或上下并排,用不同颜色区分:
中间操作(返回 Stream,可链式调用):
常见节点包括:filter(谓词筛选)、map(类型转换)、flatMap(扁平化)、sorted(排序)、distinct(去重)、limit/skip(截断)
注意标注关键点:filter 和 map 是最常用;flatMap 常用于处理嵌套集合(如 List> → List
终止操作(触发执行,返回非 Stream 结果):
常见节点包括:collect(转集合/字符串/分组)、forEach(遍历)、count(计数)、findFirst/findAny(查找)、anyMatch/allMatch/noneMatch(匹配判断)、reduce(聚合)
重点标出:collect 是最灵活也最常用;forEach 不适合做有状态操作(如 ++i),推荐用 reduce 或 collect 替代;find 系列返回 Optional,必须判空。
三、实用补充:创建方式 + 并行流 + 常见陷阱
这三个模块作为三级延伸,贴在主干旁,增强实用性:
- 如何创建 Stream:Collection.stream()、Arrays.stream(arr)、Stream.of(1,2,3)、Stream.generate()/iterate()(无限流,慎用)
- 并行流:stream().parallel() 或 parallelStream();适合计算密集型、无状态、线程安全操作;注意副作用(如修改外部变量)、顺序敏感操作(如 forEach 不保证顺序)
- 典型陷阱:重复调用 Stream;在 map 中抛异常未处理;用 == 比较引用类型元素;误以为 sorted 会改变原集合;忽略 Optional 的空指针风险
四、小技巧:用真实代码片段辅助记忆
每个关键方法旁可手写一行简例(导图中用小号字体):
- filter →
.filter(s -> s.length() > 3) - map →
.map(String::toUpperCase) - collect →
.collect(Collectors.toList())/.collect(Collectors.groupingBy(s -> s.charAt(0))) - reduce →
.reduce(0, Integer::sum)
不追求全覆盖,选 5–8 个最具代表性的即可,帮助从语法快速联想到用途。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











