Stream 로깅 처리하기
- Coding/Java
- 2021. 8. 7.
반응형
728x90
반응형
forEach
List<Integer> numbers = Arrays.asList(2, 3, 5, 6);
numbers.stream()
.map(x -> x + 3)
.filter(x -> x % 2 == 0)
.limit(3)
.forEach(System.out::println); /* 디버깅 x 결과 출력 */
스트림의 파이프라인 연산을 디버깅하자. forEach 로 스트림 결과를 출력하거나 로깅할 수 있다. 하지만 forEach를 호출하게되면, 호출 순간에 전체 스트림이 소비된다.
peek
스트림 연산 peek 을 활용하자. 호출 순간 전체 스트림을 소비하는 forEach 에 비해 peek은 실제로 스트림의 요소를 소비하지는 않는다. peek 은 자신이 확인한 요소를 파이프라인의 다음 연산으로 그대로 전달하고, 각 동작 전후의 중간값을 출력한다.
List<Integer> numbers = Arrays.asList(2, 3, 5, 6);
List<Integer> result = numbers.stream()
.peek(x -> System.out.println("from stream: " + x)) // 처음 소비한 요소를 출력
.map(x -> x + 3)
.peek(x -> System.out.println("after map: " + x)) // map 동작 실행 결과를 출력
.filter(x -> x % 2 == 0)
.peek(x -> System.out.println("after filter: " + x)) // filter 동작 실행 결과를 출력
.limit(3)
.peek(x -> System.out.println("after limit: " + x)) // limit 동작 실행 결과를 출력
.collect(Collectors.toList());
반응형
'Coding > Java' 카테고리의 다른 글
Optional 의 Map, flatMap 사용하기 (0) | 2021.08.08 |
---|---|
Optional 선언하기 (빈 Optional, NULL 가능 여부에 따른 Optioanl) (0) | 2021.08.08 |
[Java8] Map의 key 가 null 일 경우 처리 방법 (0) | 2021.08.02 |
[Java8] Map의 forEach, Sort, Remove (0) | 2021.08.02 |
List 인터페이스에서 List.of 의 오버로드 vs 가변인수 (0) | 2021.08.01 |