Java Stream limit()方法

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个

  1. 我们使用 iterate()方法创建了一个无限流。
  2. 然后使用“limit(10)”方法获取前 10 个偶数。
  3. 最后,我们使用 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