【Java】Stream API

本文深入探讨了Java 8的StreamAPI,它带来了面向计算的编程模型。介绍了如何通过集合、数组或静态方法创建Stream,以及执行中间操作如筛选、映射和排序,最后通过终止操作如匹配、查找和归约来处理数据。此外,文章还讲解了如何使用Stream进行数据统计和收集到集合。

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

Stream API

【包】java.util.stream
Stream API是JDK8的新特性,实质上实现了函数式编程

一、认识一下Stream

在java中有一类,叫做集合(Collection),其功能是用于在内存存储数据。Stream这个类与集合有很亲密的关系,它是用来处理数据的。

Collection VS Stream

CollectionStream
面向内存编程面向CPU/计算编程
操作会改变存储的数据操作不会改变源数据,而是创建了新的Stream对象
操作没有区分,任何时候都可以对数据进行处理Stream一旦终止操作输出结果,便不能再进行处理

Stream相关的API分为三类

  • 创建:创建Stream流对象
  • 中间操作:对Stream中数据进行处理
  • 终止操作:对Stream结果进行“输出”
    • 输出不是指狭义的输出结果,而是指真正生成一个表示Stream结果集的操作

二、Stream的API操作

具体使用介绍参见:https://blog.csdn.net/weixin_37948888/article/details/96995312

概述

1、创建

四种方式

  • 集合对象调用默认方法stream()/parallelStream()
  • 数组工具类Arrays.stream(数组)
  • Stream的静态方法创建有限流Stream.of(多个值)
  • Stream的静态方法创建无限流Stream.generate(Math::random)

2、中间操作

1)筛选和切片——元素类型不会发生变化
  • 过滤不需要的元素filter(Predicate)
  • 只要前n个元素 limit(n)
  • 不要前n个元素skip(n)
  • 依据hashCode和equals去除重复元素distinct()
2)映射——元素的类型发生了变化
  • map(Function)
  • flatMap(Function):方面处理集合套集合的情况
3)排序
  • 自然排序,要求元素类型实现了Comparable接口sorted()
  • 定制排序sorted(Comparator)

3、终止操作

1)匹配和查找
  • 判断是否全部元素都满足断定条件allMatch(Predicate)
  • 判断是否存在元素都满足断定条件anyMatch(Predicate)
  • 判断是否全部元素都不满足断定条件noneMatch(Predicate)
  • 返回第一个元素findFirst()
  • 返回任意一个元素findAny()
  • 统计流中数据个数count()
  • 返回元素最大值max(Comparator)
  • 返回元素最小值min(Comparator)
  • 遍历每一个元素forEach(System.out::println)
2)归约——进行统计计算
  • reduce()
3)收集——将结果集转换成集合对象
  • collect()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值