コレクションを使用するときにforEachコールの前にストリーム/パラレルストリームを挿入する理由はありますか?Java 8のコレクションとストリーム/ forEach
例:
Collection<Object> foo;
foo.forEach(); // Goes through every item in foo
foo.stream().forEach(); // Does stream make a difference here
foo.parallelStream().forEach(); // Does this make a difference here?
おかげ
forEachは、 'parallelStream()'または 'parallel()'を使用する場合にのみ、並列で呼び出されます。これを行う場合は、コンシューマが何も変更しないか、スレッドセーフであることを確認する必要があります。 –
ストリーム上の 'forEach'は、コレクション上の' forEach'とは異なり、セマンティクスが異なります。要素の順序を維持することは保証されず、パラレルストリームの場合、同期を行わずにアクションが呼び出されます。 'forEachOrdered'は' Collection.forEach'によく似ていますが、他のストリーム操作がない場合は意味がありません。 – Holger
もう1つの違いは、Collection.forEachは、基になるコレクションを変更することについてより寛容であるということです。 –