Java8 Stream API在集合上执行复杂的数据处理查询

Java 8 引入的 Stream API 是一个高级工具,用于在集合上执行复杂的数据处理查询。Stream API 通过提供一系列的中间操作和最终操作,支持声明式处理(类似于SQL声明式语句)并且可以轻松使用多核架构。

创建Stream流

创建Stream 流的方式有多中,我们可以从集合或者数组中进行创建

collection.stream()Arrays.stream(array)

或者从静态工厂中进行创建:

Stream.of(), IntStream.range()

同样也可以从文件中生成流:

Files.lines(Path path)

对流进行操作

我们对流进行操作之后并不会产生最终结果,通常来说是懒加载的,并且可以链式调用。

  • filter操作:设置一定的操作对Stream中所有的元素进行过滤
  • map操作:转换元素
  • sorted操作:对流中的数据进行排序
  • limit操作:限制流中的元素数据数量
  • ditinct操作:去除重复元素

最终操作

经过这些最终操作之后,不能再对流进行操作。一些常见的最终操作包括:

  • forEach:遍历每一个元素
  • collect:将流转换成不同类型的结果
  • reduce:通过某个二元操作合并流中的元素
  • count操作:返回流中元素的个数

简单示例

List<String> myList = Arrays.asList("apple", "banana", "cherry", "date");

List<String> filtered = myList.stream()
    .filter(s -> s.startsWith("a")) // 中间操作:过滤以"a"开头的字符串
    .map(String::toUpperCase)       // 中间操作:转换成大写
    .collect(Collectors.toList());  // 最终操作:收集到List中

filtered.forEach(System.out::println); // 输出过滤后的列表

注意

需要注意的一点是 Stream一旦执行了最终操作,就会被消耗掉,也就无法再次使用,如果我们需要再次使用相同的数据源,就需要重新创建一个新的Stream。另外,Stream的操作一般不会改变原始的数据源,通常是会产生一个新的数据集。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WeChat098

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值