stream().skip(n) 是 Java Stream API 中跳过前 n 个元素的中间操作,返回新流;n 超限得空流,负数抛 IllegalArgumentException,常与 limit() 分页配合,但大数据源慎用以防性能损耗。

stream().skip(n) 是 Java Stream API 中用于跳过前 n 个元素的方法,返回一个新流(不修改原流),常用于分页、去头、或忽略初始冗余数据。
基本用法和注意事项
skip() 是中间操作,必须配合终端操作(如 collect()、forEach())才能执行;它只对有序流有确定行为,对无序流(如 parallelStream() 或某些 Set 的流)跳过的元素不保证是“前 n 个”。
- 如果 n 大于流中元素总数,结果为空流(不会报错)
- n 为负数会抛出 IllegalArgumentException
- skip() 和 limit() 经常搭配使用实现“分页”,例如 skip(10).limit(5) 表示取第 11–15 条
常见使用示例
假设有一个整数列表:
List跳过前 2 个元素:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
立即学习“Java免费学习笔记(深入)”;
List// 输出:[3, 4, 5, 6]
和分页结合的实用写法
模拟第 2 页(每页 3 条):
int page = 2, size = 3;List
.skip((page - 1) * size)
.limit(size)
.collect(Collectors.toList());
// 若 list 有 6 个元素 → skip(3).limit(3) → [4, 5, 6]
小心性能陷阱
skip() 在底层需遍历并丢弃前 n 个元素,对大数据源(如大文件流、数据库游标)可能低效。此时应优先考虑源头分页(如 SQL 的 LIMIT OFFSET 或数据库游标),而非靠 Stream.skip() 后处理。

















