limit(n)是截取流前n个元素的中间操作,返回新流且不修改原流;n为非负整数,limit(0)得空流;常与filter等组合,推荐先filter后limit;可与skip实现分页;是短路操作,但并行流中不保证顺序。

Java 的 Stream API 中,limit(n) 是一个中间操作,用于截取流的前 n 个元素。它返回一个新的流,最多包含原流的前 n 个元素;如果原流元素少于 n 个,则返回全部。
limit 的基本用法
调用 limit(n) 非常简单,直接链式调用即可:
-
n必须是非负整数,否则抛出IllegalArgumentException -
limit(0)返回空流(不包含任何元素) - 它不会修改原始流,而是生成新流,符合 Stream 的不可变特性
配合其他操作一起使用
limit 常和 filter、sorted、map 等组合使用,注意顺序会影响结果:
- 先
filter再limit:先筛选再取前几个(推荐,更高效) - 先
limit再filter:先取前几个再筛选,可能漏掉符合条件但位置靠后的元素
例如,获取年龄大于 20 的前 3 个用户:
List.filter(u -> u.getAge() > 20)
.limit(3)
.collect(Collectors.toList());
与 skip 搭配实现分页
limit 和 skip 经常配合模拟“第 m 页,每页 n 条”:
- 第 1 页(从 0 开始):
skip(0).limit(n) - 第 2 页:
skip(n).limit(n) - 第 k 页:
skip((k-1) * n).limit(n)
注意:这种方式适合小数据量;大数据量建议用数据库分页(如 LIMIT OFFSET),避免全量加载。
注意事项和常见误区
-
limit是短路操作(short-circuiting),遇到足够元素就会停止处理后续元素,提升性能 - 对无限流(如
Stream.iterate)非常有用,可安全截断 - 不要在并行流中依赖
limit的“前 N 个”语义——并行下元素顺序不保证,结果可能不稳定 - 若需严格保序且并行处理,应先用
sorted或确保源头有序,再limit
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











