사용자 도구

사이트 도구


java:8:stream

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:8:stream [2020/02/26 14:43]
kwon37xi [unmodifiable, immutable collection]
java:8:stream [2022/04/09 00:10] (현재)
kwon37xi [parallelStream]
줄 43: 줄 43:
  
 </code> </code>
 +
 +===== Collectors.toMap =====
 +  * ''Collectors.toMap(key function, value function[, mergeFunction])''
 +  * 보통은 Key 하나에 값이 하나 일 때 사용.
 +  * Key 하나에 값이 여러개가 나오는 충돌에 대해 ''merge'' 전략을 제공해줘야 할수도 있다.
 +  * 원래 ''HashMap'' 는 ''null'' value를 허용하지만, ''Collectors.toMap''에서는 이게 허용이 안된다.
 +  * 이유는 해당 구현 내부적으로 호출하는 ''HashMap.merge()'' 메소드에서 이를 허용하지 않기 때문.
 +
 +===== Collectors.groupingBy =====
 +  * ''Map'' 을 만들면서 다시 Collectors 의 결과를 값으로 넣는다. 보통은 키 하나에 값이 여러개가 나올 때 사용.
  
 ===== distinct by key ===== ===== distinct by key =====
줄 63: 줄 73:
 ===== parallelStream ===== ===== parallelStream =====
   * [[https://dzone.com/articles/should-i-parallalise-streams|Should I Parallelize Java 8 Streams?]]   * [[https://dzone.com/articles/should-i-parallalise-streams|Should I Parallelize Java 8 Streams?]]
-  * ``parallelStream``은 작업 분배 오버헤드가 발생하기 때문에 CPU 연산작업만 병렬화 할경우에는 오히려 느려지는 경향이 있다.+  * ''parallelStream''은 작업 분배 오버헤드가 발생하기 때문에 CPU 연산작업만 병렬화 할경우에는 오히려 느려지는 경향이 있다.
   * DB 조회/API 호출 처럼 순차보다는 병렬이 확실히 더 확실할 때 빼고는 ''parallelStream''은 사용하지 않는게 낫다.   * DB 조회/API 호출 처럼 순차보다는 병렬이 확실히 더 확실할 때 빼고는 ''parallelStream''은 사용하지 않는게 낫다.
   * 그리고 Thread 안정성도 보장해줘야한다.   * 그리고 Thread 안정성도 보장해줘야한다.
줄 106: 줄 116:
 ===== 참고 ===== ===== 참고 =====
   * [[https://www.baeldung.com/java-predicate-chain|Java 8 Predicate Chain | Baeldung]]   * [[https://www.baeldung.com/java-predicate-chain|Java 8 Predicate Chain | Baeldung]]
 +  * [[https://www.baeldung.com/java-stream-reduce|Guide to Stream.reduce() | Baeldung]]
  
java/8/stream.1582695829.txt.gz · 마지막으로 수정됨: 2020/02/26 14:43 저자 kwon37xi