浅析Java8中的Stream API (1)

本文介绍了Java8的Stream API,包括其作为集合操作增强的特点,Lambda表达式的结合使用,以及Stream操作的分类:StatelessOP、StatefulOP和TerminalOP。通过实例展示了如何使用filter、map和collect等方法,以及Stream管道和Sink接口的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Stream API

Stream API是什么?

Stream API是Java8类库的核心,它能够应用在一组元素上一次执行的操作序列。Stream操作分为中间操作(StatelessOP、StatefulOP)或者最终操作(TerminalOP)两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样你我们就可以将多个操作串起来。 使用Stream的时候需要指定一个数据源,它包括List, Set等集合类。
Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错, 但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。
简单使用:
一个简单的例子:

List<String> test = new ArrayList<>();
        test.add("ABC");
        test.add("ABC");
        test.add("DEF");
        test.add("");
        List<String> result = test.stream()
                .distinct()
                .filter("ABC"::equals)
                .map(String::toLowerCase)
                .collect(Collectors.toList());
        System.out.println(result);

得到结果是:
这里写图片描述
例子中只用到了fileter、map和collect,distinct去除了集合中的重复值,fileter过滤了集合中不等于”ABC”的值,map将每一个值做toLowerCase操作,最终collect操作作为最终操作,返回了最终处理后的结果。

从StatelessOP 、 StatefulOP 和 TerminalOP开始

上面的例子包含了恰好包含了三种操作,具体Stream中的其他操作的类型分类如下:

Stream操作分类 中间操作
无状态(StatelessOP) unordered(),filter(),map(),mapToInt(),mapToLong(),mapToDouble(),
flatMap(),flatMapToInt(),flatMapToLong(),flatMapToDouble(),peek()
有状态(StatefulOP) distinct(),sorted(),limit(),skip()
最终操作(TerminalOP)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值