콜렉션을 사용할 때 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
또 다른 차이점은 Collection.forEach는 기본 컬렉션 수정에 대해 더 관대하다는 것입니다. –