據我所知,如果我有一個懶惰的流從一個列表(例如一個過濾器),檢查條件不會開始,直到我開始對流的迭代。懶惰的溪流在一瞬間全部被評估?
但是我想問 - 當我開始迭代時,迭代所有列表的流,檢查條件,並將所有結果放在「內部列表」中。在一瞬間,然後開始迭代並給出內部列表中的元素,或者當它開始迭代時,它將僅檢查第一個元素;並且在迭代期間它將檢查他的時間的每個元素。
另外我想問問它是否取決於它是否平行。我在這個網站上看到了多個問題,主題是「當惰性流迭代」,但不是這個特定的問題 - 如果它一次迭代是一點一點的,所以不要標記它重複,直到你看到if它是完全一樣的問題)
編輯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我來自這個問題......有一般axplanation一般認爲,懶惰的流不會迭代,但不能解釋如果 - 當它迭代時 - 它在迭代過程中一次或一次迭代 –
我想我不太明白你的問題。流不僅限於集合,它們是有限的 - 它們也可以來自無限的來源。你是問流可以提前終止還是在處理時提前退出? – Makoto
@Makoto我問它如何與集合,如果所有的集合迭代一次,然後我得到任何元素,或者它只迭代一個元素 –