Stream limit(maxSize) 用于从 Stream 中检索多个元素,而计数不得大于某个限制。limit()
方法返回一个由给定流的元素组成的 Stream,被截断为长度不超过 maxSize
。
limit(N)
方法按流的遇到顺序返回第一个 N
元素。
Java Stream limit()方法
limit()语法
Stream<T> limit(long maxSize)
这里的 maxSize
是流应该限制的元素数量;方法返回值是一个新的“Stream”,由从原始流中选取的元素组成。
说明
- Stream.limit() 方法是短路中间操作(short-circuiting intermediate operation)。
如果中间操作在呈现无限输入时可能因此产生有限流,则它是短路的(short-circuiting)。请注意,如果终端操作在出现无限输入时可能在有限时间内终止,则它是短路的。
- 它返回一个由当前流的最大元素组成的流,长度不超过给定的大小。
- 通常,
limit()
是一种廉价的操作,但如果maxSize
具有很大的值并且流是并行处理的,则有时可能会很昂贵。 - 使用无序流源(例如
generate(Supplier)
)或者使用BaseStream.unordered()
删除排序约束可能会导致并行管道中limit()
的显着加速。 limit()
返回遇到顺序中的前 n 个元素。
www. On IT Road .com
Stream limit() 示例
示例; 从无限个偶数的Stream流中获取其中10个
- 我们使用
iterate()
方法创建了一个无限流。 - 然后使用“limit(10)”方法获取前 10 个偶数。
- 最后,我们使用
collect(Collectors.toList())
方法将流中的偶数收集到List
中。
import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<Integer> evenNumInfiniteStream = Stream.iterate(0, n -> n + 2); List<Integer> newList = evenNumInfiniteStream.limit(10) .collect(Collectors.toList()); System.out.println(newList); } }
日期:2020-09-17 00:10:05 来源:oir作者:oir