collect() 메서드(1)
·
자바/스트림
1. collect() 메서드란? - 스트림의 요소를 수집하는 최종 연산으로 앞서 배운 리듀싱과 유사하다. - 어떻게 수집할 것인지에 대한 방법이 정의되어 있는 Collector가 있다. - Collector 인터페이스로 직접 구현도 가능하고 미리 작성된 Collectors 클래스를 사용할 수 있다. - collect() 메서드의 매개변수는 Collector를 필요로 한다. 즉, Collector를 구현한 클래스의 객체 이어야 한다는 뜻이다. ( 마치 sort() 메서드 위해서 Comparator가 필요한 것처럼 ) Object collect(Collector collector) Object collect(Supplier supplier, BiConsumer accumlator, BiConsumer co..
스트림의 최종 연산(조건 검사, 통계, 리듀싱)
·
자바/스트림
1. forEach() - peek()와 달리 스트림의 요소를 소모하는 최종연산자이다. void forEach(Consumer
Optional<T>와 OptionalInt
·
자바/스트림
1. Optional - Optional은 지네릭 클래스로 "T타입의 객체"를 감싸는 래퍼 클래스이므로, 모든 타입의 참조변수를 담을 수 있다. - 최종 연산의 결과를 그냥 반환하는 것이 아니라 Optional객체에 담아서 반환한다. - 또한 Optional 클래스는 null인지 아닌지 알려주는 정의된 메서드가 포함되어 있다. public final class Optional{ private final T value; // T타입의 참조변수 ... } - 아래는 Optional 클래스에 정의된 메서드들이다. (1) Optional.of() - static : 해당 객체에 값을 초기화한다. ( ex) Optional.of("abc"), Optional.of(new String("abc")) ) ( 만약 참..
스트림의 중간 연산(3)
·
자바/스트림
1. flatMap() - Stream를 Stream로 변환 - 스트림의 요소가 배열이거나 map()의 연산결과가 배열인 경우, 즉 스트림 타입이 Stream라면, Stream로 바꿀 때, flatMap()을 사용한다. - 아래의 예시를 한번 보자. ( Stream을 만들어주기 위해 Arrays.stream(T[])를 사용했다. ) ( 그러나, map() 사용하여 변환해 주었더니, Stream의 형태가 되었다. ) ( 이렇게 되면, 우리가 원하는 Stream으로 못 만들어준다. ) ( 그러므로, 위에서 말한대로 flatMap() 메서드를 이용해서, 아래와 같은 형태를 만들어야 한다. ) 1-1. flatMap()을 이해하는 예제(1) : map() 대신 flatMap()을 사용하여 Stream 구조로 만..