这里是Stream的跳过方法的definition:
skip(long n)返回由剩余元素组成的流 丢弃流的前n个元素后,此流。
我的问题是为什么参数是long
而不是int
?
这是一个例子:
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> stringList = Arrays.asList("1","1","2","3","4");
stringList.stream()
.skip(2)
.forEach(System.out::print);// will prints 234
}
}
答案 0 :(得分:5)
因为并非所有列表都限制为Integer.MAX_VALUE
个元素
例如LinkedList
。
答案 1 :(得分:3)
有时您可能希望在{em>无限流上skip
,在这种情况下,您可能需要一个大于int
类型可容纳的最大数字的数字。因此,使这样的方法接受可能的最大整数是完全有意义的。此外,正如 @Joop Eggen 所评论的那样,它与count()
一致。当然,我们可以争辩说,我们可以让count()
和skip()
同时返回/接受int
但是为了利用流,有时我们可能需要可以容纳最大整数的类型。
答案 2 :(得分:2)
这是因为Stream
并非总是来自像ArrayList
这样的集合,其最大长度为Integer.MAX_VALUE
,但也可以在每行的文件上创建,实际上使流为可能会达到大于int
的值。
LinkedList
等更多案例也为您提供了超过Integer.MAX_VALUE
中List
个元素数量的可能性。