두 개의 Stream을 병합하여 목록을 채우고 일부 작업을 수행 한 다음 모든 요소를 가져 와서 저장하고 싶습니다. 두 가지 접근 방식은 내 마음에 온 :여러 요소를 추가하는 Collector 또는 ForEach
수집 :
myList.addAll(Stream.concat(stream1, stream2)
.flatMap(foo -> someMethod(foo).stream())
.collect(Collectors.toList()));
를 ForEach :
Stream.concat(stream1, stream2)
.flatMap(foo -> someMethod(foo).stream())
.forEach(myList::add);
사용에서 하나 개의 솔루션을 expells 성능에 차이가 있습니까?
수집기를 사용하는 첫 번째 수집자가 즉시 소비되고 List#addAll
에 의해 삭제되는 임시 목록을 만드나요?
수정 이 질문은 어떻게 든 기능 및/또는 성능을 설명하는 대답을 생성하기위한 것입니다. 나는 어떤면에서 "더 잘 어울리는가"등에 대한 토론을 시작하고 싶지 않습니다. 그것은 높은 의견을 바탕으로합니다.
@Holger 예, 그게 내 뜻이었습니다. "myList"에 맞는 크기를 할당해라. –
아, 나는 "forEach method"에 대해 "foreach approach"라고 오인했다. 왜냐하면 문장은 일반적인 방법론과 같이 공식화되기 때문이다. – Holger