Java8流:为什么Stream.skip(long n)方法使用long而不是int作为参数?

Java8流:为什么Stream.skip(long n)方法使用long而不是int作为参数?,java,java-stream,Java,Java Stream,这里是流的跳过方法的示例: 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","

这里是流的跳过方法的示例:

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
  }
} 
导入java.util.array;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args){
List stringList=Arrays.asList(“1”、“1”、“2”、“3”、“4”);
stream()
.跳过(2)
.forEach(System.out::print);//将打印234
}
} 

有时您可能希望在无限流上跳过
,在这种情况下,您可能需要一个大于
int
类型所能容纳的最大值的数字。因此,让这样一个方法接受尽可能大的整数是完全有意义的。另外,正如所评论的,它与
count()
一致。当然,有人会说我们可以同时拥有
count()
skip()
返回/接受一个
int
但为了利用流,有时我们可能需要能够容纳尽可能大的整数的类型。

这是因为
并不总是来自像
数组列表
这样的集合,其中最大长度为
整数。MAX_值
,但也可以通过文件为每行,实际上使流可能达到大于
int
的值


更多类似于
LinkedList
的情况还提供了在
列表中超过
Integer.MAX\u VALUE
元素数的可能性,因为并非所有列表都限制为
Integer.MAX\u VALUE
元素数。

例如,
LinkedList

因为流可能很大吗?@LouisWasserman我首先想到的是int的大小,但我不确定这是否是实现此功能的设计师的原因。这与
count()
@JoopEggen true一致,我会在答案中包括这一点。你正确地指出了流可以是无限长的!ArrayList是否限制为Integer.MAX_值?如果我再加上更多,会发生什么?是否有控件?@Aguid yes,
ArrayList
限制为
Integer.MAX\u VALUE
。当尝试添加更多元素时,您将得到一个
IndexOutOfBounds
异常。考虑到
LinkedList
的每元素开销,期望这样一个列表的值大于
Integer.MAX\u值是不现实的,但流不需要集合作为输入:
LongStream.range(0,Integer.MAX_VALUE+1000L).boxed()
Stream.iterate(0L,l->l+1)
,例如…如果LinkedList.size()的大小大于Integer.MAX_VALUE,它的结果会是什么?(LinkedList是一个列表)@Aguid