count、min、max是java stream的终端操作,分别返回long、optional;需处理空流,不可重复使用流,推荐一次流多收集或基本类型流优化。

Java Stream API 的 count、min 和 max 是常用终端操作,用于快速获取集合的元素数量或极值。它们返回的是 long 或 Optional 类型,需注意空流处理和比较逻辑。
用 count 统计元素个数
count() 是最简单的聚合操作,返回流中元素总数,类型为 long。它不关心元素内容,也不触发短路,会遍历整个流(包括中间操作已过滤/映射后的结果)。
- 直接调用即可,无需参数:例如
list.stream().count() - 配合 filter 使用可统计满足条件的元素数:如
list.stream().filter(x -> x > 10).count() - 对空流返回
0L,不会抛异常,安全可用
用 min 和 max 找最小值与最大值
min(Comparator) 和 max(Comparator) 都需要传入一个比较器,返回 Optional<t></t>。因为流可能为空,必须显式处理空值情况,否则调用 get() 可能抛 NoSuchElementException。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 基础写法:例如
list.stream().min(Integer::compareTo),返回Optional<integer></integer> - 推荐用
orElse(null)、orElseThrow()或ifPresent()安全解包 - 自定义比较逻辑:如按字符串长度找最长名
names.stream().max(Comparator.comparing(String::length)) - 若元素本身实现
Comparable(如Integer、String),可用Comparator.naturalOrder()或方法引用
组合使用与常见陷阱
这三个操作都是终端操作,一旦调用就会消费流,不可复用。若需多个统计结果,应避免多次遍历——可改用 Collectors.summarizingInt/Long/Double 或自定义收集器。
- ❌ 错误:重复调用
stream().count()和stream().max(...)→ 创建两个独立流,遍历两次 - ✅ 推荐:一次流 + 多个收集器,如
Collectors.teeing(Java 12+)或用collect()自定义容器 - ⚠️ 注意:
min/max在并行流中仍保证正确性,但比较器必须是无状态且兼容的 - ? 小技巧:对基本类型流(如
IntStream),可用count()、min()、max()直接返回对应包装类型或OptionalInt,更高效
不复杂但容易忽略细节,关键是理解返回类型、空值处理和流的一次性特征。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










