当前位置: 首页 > news >正文

Java Stream API 终止操作的详细解析

一、终止操作概述

  • 定义:终止操作(Terminal Operations)是 Stream 处理流程的最后一步,触发流的遍历并生成结果,之后流不可再用。
  • 核心特点
    • 触发计算:中间操作(如 filtermap)在终止操作调用时才会执行。
    • 关闭流:流一旦终止,无法再执行其他操作。
    • 返回非流结果:如基本类型、对象、集合或 void

二、常见终止操作分类

1. 遍历与消费
  • forEach(Consumer<T>)
    遍历流中的每个元素,无返回值。

    List<String> list = Arrays.asList("A", "B", "C");
    list.stream().forEach(System.out::println); // 输出 A B C
    
  • forEachOrdered(Consumer<T>)
    在并行流中按顺序遍历元素(牺牲部分性能保证顺序)。

    list.parallelStream().forEachOrdered(System.out::println); // 顺序输出
    

2. 聚合与统计
  • count()
    返回流中元素的总数。

    long count = Stream.of(1, 2, 3).count(); // 3
    
  • max(Comparator<T>) / min(Comparator<T>)
    返回最大/最小元素(返回 Optional<T>)。

    Optional<Integer> max = Stream.of(5, 2, 8).max(Integer::compare); // 8
    
  • sum() / average()
    仅适用于基本类型流(IntStreamLongStreamDoubleStream)。

    int sum = IntStream.of(1, 2, 3).sum(); // 6
    double avg = IntStream.of(1, 2, 3).average().orElse(0); // 2.0
    

3. 匹配与查找
  • anyMatch(Predicate<T>)
    判断是否存在至少一个元素满足条件。

    boolean hasEven = Stream.of(1, 3, 5).anyMatch(n -> n % 2 == 0); // false
    
  • allMatch(Predicate<T>)
    判断所有元素是否满足条件。

    boolean allPositive = Stream.of(1, 2, -3).allMatch(n -> n > 0); // false
    
  • noneMatch(Predicate<T>)
    判断是否没有元素满足条件。

    boolean noEmpty = Stream.of("A", "B").noneMatch(String::isEmpty); // true
    
  • public static void main(String[] args) {//匹配person的名字是否都为”李白“System.out.println(PersonService.getPersons().stream().allMatch(new Predicate<Person>() {@Overridepublic boolean test(Person person) {return person.getName().equals("李白");}}));//匹配名字是否至少有一个为”李白“boolean b = PersonService.getPersons().stream().anyMatch(person -> person.getName().equals("李白"));System.o

相关文章:

  • Python filter()函数详解:数据筛选的精密过滤器
  • 3.20 工程计价数字化与智能化
  • 【Redis】常用的数据类型 + 单线程模型
  • 改进yolo11模型学习
  • AI大模型学习三十、ubuntu安装comfyui
  • 让学习回归到技术上来(技术 !=== 死记硬背)
  • 项目启动以及Vue初识
  • 小白成长之路-计算机网络(四)
  • Axure中继器学习笔记
  • 磁盘管理练习题
  • RagFlow参数配置测试
  • 行为型:命令模式
  • 题解——相交链表(力扣160 easy)
  • 详解MySQL调优
  • SAAS架构设计2-流程图-用户与租户之间对应关系图
  • 大模型(7)——向量模型(向量化存储)
  • 第三章、运动学逆解(双足轮根据腿高求舵机角度)
  • 跨境快消品市场迎来爆发拐点:解码亚马逊“超级快消周“首日战报
  • 5G 网络中的寻呼流程
  • 聚焦北京央美备考画室:探寻实力之巅
  • 昌平手机网站建设/搜索引擎营销的特点是什么
  • 久久建筑网登录入口/亚马逊排名seo
  • 网站代/seo自学网站
  • 酒店代理分销平台/整站优化要多少钱
  • 足球网站建设/应用宝下载
  • 微网站内容/推广产品的软文怎么写