Java IntStream limit()
IntStream limit(long maxSize) 返回一个由这个流的元素组成的流,被截断的长度不超过maxSize。
注意: IntStream limit()是一个 短路的有状态的中间操作 ,也就是说,当对一个无限的输入进行处理时,它可能会产生一个有限的流作为结果,而不处理整个输入。
语法:
IntStream limit(long maxSize)
参数
- IntStream : 一个原始int值元素的序列。这是对Stream的int基元特化。
- maxSize : 流应该限制的元素数量。
返回值 : 该函数返回一个由这个流的元素组成的流,被截断,长度不超过maxSize。
异常 : 如果maxSize为负数,该函数会抛出 IllegalArgumentException 。
例子 1 :
// Java code for IntStream limit
// (long maxSize)
import java.util.*;
import java.util.stream.IntStream;
class GFG {
// Driver code
public static void main(String[] args)
{
// Creating an IntStream
IntStream stream = IntStream.of(2, 4, 6, 8, 10);
// Using IntStream limit(long maxSize) to
// get a stream consisting of the elements of
// this stream, truncated to be no longer
// than maxSize in length.
stream.limit(3).forEach(System.out::println);
}
}
输出:
2
4
6
例2 :
// Java code for IntStream limit
// (long maxSize)
import java.util.*;
import java.util.stream.IntStream;
class GFG {
// Driver code
public static void main(String[] args)
{
// Creating an IntStream of numbers [5, 6, .. 11]
IntStream stream = IntStream.range(5, 12);
// Using IntStream limit(long maxSize) to
// get a stream consisting of the elements of
// this stream, truncated to be no longer
// than maxSize in length.
stream.limit(4).forEach(System.out::println);
}
}
输出:
5
6
7
8
例3 :
// Java code for IntStream limit
// (long maxSize)
import java.util.*;
import java.util.stream.IntStream;
class GFG {
// Driver code
public static void main(String[] args)
{
// Creating an IntStream
IntStream stream = IntStream.iterate(4, num -> num + 2);
// Using IntStream limit(long maxSize) to
// get a stream consisting of the elements of
// this stream, truncated to be no longer
// than maxSize in length.
stream.limit(4).forEach(System.out::println);
}
}
输出:
4
6
8
10
IntStream limit()和IntStream skip()之间的区别。
- limit()方法返回一个由第一个maxSize元素组成的缩小的流,但是skip()方法在跳过第一个maxSize元素后返回一个剩余元素的流。
- limit()是一个短路的有状态的中间操作,即当处理一个无限的输入时,它可能会产生一个有限的流作为结果,而skip()是一个有状态的中间操作,即它可能需要在产生一个结果之前处理整个输入。