《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.6 简单约简

简介: 本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第1章 ,第1.6节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 简单约简
现在你已经看到了如何创建和转换流,我们终于可以讨论最重要的内容了,即从流数据中获得答案。我们在本节所讨论的方法被称为约简。约简是一种终结操作(terminal operation),它们会将流约简为可以在程序中使用的非流值。
你已经看到过一种简单约简:count方法会返回流中元素的数量。
其他的简单约简还有max和min,它们会返回最大值和最小值。这里要稍作解释,这些方法返回的是一个类型Optional的值,它要么在其中包装了答案,要么表示没有任何值(因为流碰巧为空)。在过去,碰到这种情况返回null是很常见的,但是这样做会导致在未做完备测试的程序中产生空指针异常。Optional类型是一种更好的表示缺少返回值的方式。我们将在下一节中详细讨论Optional类型。下面展示了可以如何获得流中的最大值:
image
findFirst返回的是非空集合中的第一个值。它通常会在与f?ilter组合使用时显得很有用。例如,下面展示了如何找到第一个以字母Q开头的单词,前提是存在这样的单词:
image

如果不强调使用第一个匹配,而是使用任意的匹配都可以,那么就可以使用f?indAny方法。这个方法在并行处理流时会很有效,因为流可以报告任何它找到的匹配而不是被限制为必须报告第一个匹配。
image

如果只想知道是否存在匹配,那么可以使用anyMatch。这个方法会接受一个断言引元,因此不需要使用filter。
image

还有allMatch和noneMatch方法,它们分别会在所有元素和没有任何元素匹配断言的情况下返回true。这些方法也可以通过并行运行而获益。
java.util.stream.Stream 8

  • Optional max(Comparator<? super T> comparator)
  • Optional min(Comparator<? super T> comparator)
    分别产生这个流的最大元素和最小元素,使用由给定比较器定义的排序规则,如果这个流为空,会产生一个空的Optional对象。这些操作都是终结操作。
  • Optional f?indFirst()
  • Optional f?indAny()
    分别产生这个流的第一个和任意一个元素,如果这个流为空,会产生一个空的Optional对象。这些操作都是终结操作。
  • boolean anyMatch(Predicate<? super T> predicate)
  • boolean allMatch(Predicate<? super T> predicate)
  • boolean noneMatch(Predicate<? super T> predicate)
    分别在这个流中任意元素、所有元素和没有任何元素匹配给定断言时返回true。这些操作都是终结操作。
目录
打赏
0
0
0
0
1408
分享
相关文章
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
132 2
Java网络编程进阶:Socket通信的高级特性与应用
【6月更文挑战第21天】Java Socket通信是分布式应用的基础,涉及高级特性如多路复用(Selector)和零拷贝,提升效率与响应速度。结合NIO和AIO,适用于高并发场景如游戏服务器和实时数据分析。示例展示了基于NIO的多路复用服务器实现。随着技术发展,WebSockets、HTTP/2、QUIC等新协议正变革网络通信,掌握Socket高级特性为应对未来挑战准备。
80 1
你必须掌握的 21 个 Java 核心技术!,千峰Java
你必须掌握的 21 个 Java 核心技术!,千峰Java
|
6月前
|
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
221 3
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
52 2
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
135 3
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
71 2
|
11月前
|
java的高级特性
Java的关键特性包括:跨平台能力,依赖JVM实现“一次编写,到处运行”;面向对象编程,通过类和对象抽象提高代码复用和维护性;内置安全机制如内存管理和异常处理;丰富的标准类库提供各种API;以及支持多线程,充分利用CPU资源。学习路线上,从基础的面向对象和类库使用开始,逐渐深入到多线程和高级特性。
103 1
Java核心技术第八章-泛型
Java核心技术第八章-泛型
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【6月更文挑战第18天】在Java中,Map的两大代表HashMap和TreeMap提供高效键值对操作。HashMap允许设定初始容量和加载因子以优化性能,非线程安全,可借助synchronized或ConcurrentHashMap处理多线程。遍历可通过entrySet()、keySet()和values()。而TreeMap依据键进行排序,支持自然排序和自定义Comparator,提供范围查询、获取首尾键的功能,适用于需有序遍历的场景。理解和利用这些特性能增强代码功能和效率。
75 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等