Java Stream peek()
1. 간단한 예 이름 스트림이 있고 이를 콘솔에 인쇄하려고 한다. peek()는 Consumer<T>를 유일한 인수로 기대하므로 적합해 보인다. Stream<String> nameStream = Stream.of("Alice", "Bob", "Chuck"); nameStream.peek(System.out::println); ...
1. 간단한 예 이름 스트림이 있고 이를 콘솔에 인쇄하려고 한다. peek()는 Consumer<T>를 유일한 인수로 기대하므로 적합해 보인다. Stream<String> nameStream = Stream.of("Alice", "Bob", "Chuck"); nameStream.peek(System.out::println); ...
1. Stream.reduce() 사용 Stream.reduce()는 stream의 요소를 축소하는 터미널 작업이다. 스트림의 각 요소에 이진 연산자(누산기)를 적용한다. 여기서 첫 번째 피연산자는 이전 애플리케이션의 반환 값이고 두 번째 피연산자는 현재 스트림 요소이다. reduce() 메서드를 사용하는 첫 번째 방법에서 accumulator 함...
1. Stream.filter() 사용 filter() 메소드는 주어진 Predicate와 일치하는 스트림 요소를 필터링할 수 있는 Stream 인터페이스의 중간 작업이다. Stream<T> filter(Predicate<? super T> predicate) 어떻게 작동하는지 확인하기 위해 Customer 클래스를 만든다....
1. 기본 예시 간단한 조건자를 사용하여 이름 목록을 필터링하는 방법이다. @Test public void whenFilterList_thenSuccess(){ List<String> names = Arrays.asList("Adam", "Alexander", "John", "Tom"); List<String> res...
1. forEach() 내의 if/else 로직 먼저 Integer List를 만든 다음 정수 스트림 forEach() 메서드 내에서 기존 if/else 논리를 사용한다. List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); ints.stream() .forEach...
1. Spliterator API 1) tryAdvance 이는 시퀀스를 단계별로 실행하는데 사용되는 주요 방법이다. 이 메소드는 Spliterator의 요소를 하나씩 순차적으로 소비하는데 사용되는 소비자를 취하고, 순회할 요소가 없으면 false를 반환한다. 여기서는 요소를 순회하고 분할하는데 이를 사용하는 방법이다. 먼저 35000개의 기사가...
1. Stream Takewhile/Dropwhile 메서드에 대한 토론은 StackOverflow에서 반복적으로 나타났다 (가장 인기 있는 것은 이 메서드 이다). 이 Stream의 현재 값 길이가 10 보다 작아질 때까지 이전 Stream의 값에 문자 하나를 추가하여 String의 Stream을 생성한다고 가정한다. Java 8에서는 실제로 다...
1. 스트림 API 사용 Stream API는 Object 클래스의 equals() 메서드를 기반으로 목록의 다양한 요소를 반환하는 distinct() 메서드를 제공한다. 그러나 특정 속성으로 필터링하려는 경우 유연성이 떨어진다. 우리가 가진 대안 중 하나는 상태를 유지하는 필터를 작성하는 것이다. 1) 상태 저장 필터 사용 가능한 솔루션 중 하나...
1. Primitive Streams 스트림은 주로 기본 유형이 아닌 객체 컬렉션과 함께 작동한다. 다행스럽게도 가장 많이 사용되는 세 가지 기본 유형인 int, long 및 double을 사용하는 방법을 제공하기 위해 표준 라이브러리에는 세 가지 기본 유형에 특화된 구현인 IntStream, LongStream 및 DoubleStream이 포함되어...
1. 앞에 추가 정적 Stream.concat()을 호출하면 주어진 요소를 Stream 앞에 쉽게 추가할 수 있다. @Test public void givenStream_whenPrependingObject_thenPrepended() { Stream<Integer> anStream = Stream.of(1, 2, 3, 4, 5);...