skip方法用于跳过流中前N个元素,返回剩余元素组成的新流;若元素不足则返回空流。其语法为Stream skip(long n),n为非负数,否则抛出IllegalArgumentException。该方法是中间操作,可链式调用,常与filter、map、limit等结合使用。示例一:从列表[1,2,3,4,5]跳过前2个元素,结果为[3,4,5]。示例二:实现分页,每页2条,跳过前2条后取2条,得["c","d"]。示例三:元素少于跳过数时返回空列表,如跳过3个仅含1个元素的列表,结果为空。注意事项:skip(0)返回原流完整视图;有序流保证顺序跳过,无序流不保证;操作延迟执行,终端操作触发;避免在无限流中滥用导致性能问题。skip适用于数据截取、分页、忽略头部冗余等场景,合理搭配其他Stream方法可提升集合处理效率。

在Java中,Stream 提供了 skip() 方法用于跳过流中的前N个元素,返回一个新的流,该流由原流中跳过前N个元素后的剩余元素组成。如果原流中元素不足N个,则返回空流。
skip方法的基本语法
Stream
参数 n 表示要跳过的元素个数,必须是非负数。若传入负数会抛出 IllegalArgumentException。
该方法是中间操作(返回Stream对象,可链式调用),常与其他操作如 filter、map、limit 等结合使用。
常见使用场景与示例
1. 跳过List中的前几个元素
立即学习“Java免费学习笔记(深入)”;
从一个整数列表中跳过前2个元素:
List
List
.skip(2)
.collect(Collectors.toList());
// 输出:[3, 4, 5]
2. 结合limit实现分页效果
模拟分页查询,每页2条,获取第2页数据:
List
List
.skip(2) // 跳过第一页
.limit(2) // 取当前页数量
.collect(Collectors.toList());
// 输出:["c", "d"]
3. 跳过空流或不足N个元素的情况
若流中元素少于跳过的数量,skip会返回空流,不会报错:
List
List
.skip(3)
.collect(Collectors.toList());
// 输出:[] (空列表)
注意事项与建议
- skip(0) 返回原始流的完整视图,不进行任何跳过。
- 对于有序流,skip保证跳过的是前N个按顺序的元素;对于无序流,跳过的元素不保证顺序。
- skip操作是延迟执行的,只有在终端操作(如collect、forEach)触发时才会生效。
- 避免对无限流直接使用skip后接大量处理,可能导致性能问题或内存溢出。
基本上就这些。skip是一个简单但实用的操作,适合做数据截取、分页、忽略头部冗余信息等任务。合理搭配其他Stream方法,能让集合处理更清晰高效。










