Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java 8中.stream()的默认实现是什么?_Java_Java 8 - Fatal编程技术网

java 8中.stream()的默认实现是什么?

java 8中.stream()的默认实现是什么?,java,java-8,Java,Java 8,它只是说: 返回以此集合作为其源的序列流 当无法使用拆分器方法时,应重写此方法 返回不可变、并发或后期绑定的拆分器。 有关详细信息,请参见拆分器 但是我找不到任何代码显示它如何创建和返回新流 double average = roster .stream() .filter(p -> p.getGender() == Person.Sex.MALE) .mapToInt(Person::getAge)`enter code here` .average() .getAsDouble();

它只是说:

返回以此集合作为其源的序列流

当无法使用拆分器方法时,应重写此方法 返回不可变、并发或后期绑定的拆分器。 有关详细信息,请参见拆分器

但是我找不到任何代码显示它如何创建和返回新流

double average = roster
.stream()
.filter(p -> p.getGender() == Person.Sex.MALE)
.mapToInt(Person::getAge)`enter code here`
.average()
.getAsDouble();
花名册是ArrayList的列表实例 Person是一个表示Person的简单类
基本上,整个流实现都是包私有的,因此您不会在docs.oracle.com上看到任何内容

但请看一下这里的源代码:


您可以从大多数类用于创建各种流的StreamSupport开始。

查看任何类型的花名册的源代码,并向上查看其对象层次结构,直到找到流方法。我这样做了,但没有显示任何内容。这就是我要找的网站-docs.oracle.com。这是什么意思?你看过源代码了吗?stream的默认实现在Collection中,所以我不知道你在看什么源代码。只有一个抽象的j.u.stream.stream实现:j.u.stream.ReferencePipeline,它进一步专门化为ReferencePipeline。前往管道的源阶段,对于有状态/无状态的中间层,使用ReferencePipeline.StatefulOp/ReferencePipeline.StateOp管道的各个阶段。对于j.u.stream.Double/Int/LongStream=>j.u.stream.Double/Int/longpippeline,使用相应的Head、StatefulOp和StatelessOp静态嵌套类也是如此。