【发布时间】:2015-12-12 19:16:07
【问题描述】:
我了解,如果我有来自列表的惰性流(例如过滤器),则在我开始对流进行迭代之前,不会开始检查条件。
但我想问一下——当我开始迭代时,流是否迭代了所有列表,检查条件,并将所有结果放入“内部列表”中。一会儿然后开始迭代并给我内部列表中的元素,或者当它开始迭代时它只会检查第一个元素;并且在迭代过程中它会在他的时间检查每个元素。
另外我想问一下是否是平行的。
(我在这个网站上看到了多个问题,主题是“当惰性流迭代时”,但不是这个特定的问题 - 如果它一次迭代是一点点的,所以不要将它标记为重复,直到你看到它是完全相同的问题)
EDIT 3(编辑示例以使其清晰)- 例如:
ArrayList<Integer> list=new ArrayList<Integer>();
for(int i=0;i<10000;i++)
list.add(i);//fill the list with integers
Iterator<Integer> iterator=list.stream().filter(j->j%2==0).iterator();
iterator.next();
如果在最后一行,是否需要花费一些时间才能找到第一个元素。
【问题讨论】:
-
@dima 我来自这个问题......一般来说,懒惰的流不会立即迭代,但没有解释是否 - 当它迭代时 - 它一次或一点迭代在迭代过程中逐位
-
我想我不太明白你的问题。流不仅限于有限的集合——它们也可以来自无限的来源。您是在问流是否可以提前终止,或者它是否在处理时提前退出?
-
@Makoto 我在问它如何与集合一起工作,如果所有集合在我得到任何元素之前迭代一次,或者它只迭代一个元素
-
@gits you're write' 我当然错过了一些东西!
-
你的问题真的不清楚。你想解决什么问题?你想了解什么?
标签: java java-8 java-stream