Java的流表达式使用

一、流的创建

流可以从多种数据源创建,包括集合、数组、I/O资源等:

java

// 从集合创建

List list = Arrays.asList(1, 2, 3);

Stream stream = list.stream();

// 从数组创建

int\[\] array = {1, 2, 3};

IntStream intStream = Arrays.stream(array);

// 通过Stream.of创建

Stream stringStream = Stream.of("A", "B", "C");

二、中间操作(Intermediate Operations)

中间操作返回新流,支持链式调用,但不会立即执行:

​过滤(Filter)​​

筛选符合条件的元素:

java

list.stream().filter(n -> n % 2 == 0); // 筛选偶数

​映射(Map)​​

转换元素类型或提取属性:

java

list.stream().map(String::toUpperCase); // 字符串转大写

​排序(Sorted)​​

按自然顺序或自定义比较器排序:

java

list.stream().sorted(Comparator.reverseOrder()); // 降序排列

​去重(Distinct)​​

去除重复元素:

java

list.stream().distinct();

​截取与跳过(Limit/Skip)​​

java

list.stream().limit(5); // 取前5个元素

list.stream().skip(2); // 跳过前2个元素

三、终止操作(Terminal Operations)

终止操作触发流的执行并返回结果:

​收集结果(Collect)​​

将流转换为集合或聚合数据:

java

List names = list.stream()

.filter(s -> s.startsWith("A"))

.collect(Collectors.toList());

​遍历(ForEach)​​

对每个元素执行操作:

java

list.stream().forEach(System.out::println);

​统计(Count/Sum/Max/Min)​​

java

long count = list.stream().count(); // 元素总数

int sum = list.stream().mapToInt(Integer::intValue).sum(); // 求和

​归约(Reduce)​​

自定义聚合逻辑:

java

int sum = list.stream().reduce(0, Integer::sum); // 累加求和

四、并行流(Parallel Stream)

通过并行处理提升大数据集性能:

java

int sum = list.parallelStream()

.mapToInt(n -> n * n)

.sum(); // 并行计算平方和

注意:并行流适用于计算密集型任务,但可能因线程开销导致小数据集效率降低。

五、注意事项

​流的不可复用性​

流一旦被终止操作消费,不可重复使用。

​惰性求值​

中间操作延迟执行,直到终止操作触发。

​避免副作用​

推荐使用纯函数式操作,而非在流中修改外部变量。

相关推荐
2601_966949657 分钟前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
Mikko710 分钟前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端
.Bryce.16 分钟前
从零到一开发技术名词大全:从需求分析到 AI Agent 工程
java·网络·人工智能·agent·需求分析·agent评测
SL_staff28 分钟前
JVS-APS的7个刚性约束设计:从无限产能幻觉到可执行排产的工程实践
java·spring cloud·全栈
神仙别闹1 小时前
基于Python实现英词语自动对齐系统
开发语言·python
akinggw1 小时前
libagentcore - 一个基于c++的AI多agent系统升级到2.0版本
开发语言·jvm·c++
代码山河2 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
老歌老听老掉牙2 小时前
圆柱端面四平面交线及其在yoz面投影的几何解析与 Python 实现
开发语言·python·平面
中二骚年2 小时前
Windows 安全中心 / 防火墙故障,calc和Microsoft Store,终端(管理员)无法正常打开。 原因 + 修复方案
windows·安全·microsoft
旖旎夜光3 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习