STREAM

· Java
Collector 인터페이스란? Collector 인터페이스는 리듀싱 연산(즉, 컬렉터)을 어떻게 구현하지 제공하는 메서드 집합으로 구성된다. 물론 우리가 Collector 인터페이스를 구현하는 리듀싱 연산을 만들 수도 있다. Collector 인터페이스를 집접 구현해서 더 효율적으로 문제를 해결하는 컬렉터를 만드는 방법을 살펴보자. Collector 인터페이스를 보면 시그니처와 다섯 개의 메서드 정의를 확인할 수 있다. public interface Collector { Supplier supplier(); BiConsumer accumulator(); BinaryOperator combiner(); Function finisher(); Set characteristics(); } 먼저 시그니처를 보면..
· Java
컬렉터(Collector)란 무엇인가? 컬렉터(Collector) 인터페이스 구현은 스트림 요소를 어떤 식으로 도출할지 지정한다. 스트림에 collect를 호출하면 컬렉터가 스트림의 요소에 리듀싱 연산을 수행하여 필요한 데이터 구조로 간단하게 도출할 수 있다. 만약 아래처럼 통화 별 주문 목록 데이터가 있다고 가정해보자. @ToString @Getter @AllArgsConstructor public class Order { private String orderNumber; private String orderProductName; private Integer payPrice; private Currency currency; } List orders = new ArrayList() {{ add(new O..
· Java
앞서 스트림이 무엇인지, 스트림을 어떻게 활용하는지 알아보았다. 이번엔 여러가지 스트림을 만드는 방법에 대해 알아보자. 값으로 스트림 만들기 임의의 수를 인수로 받는 정적 메서드 Stream.of를 이용해서 스트림을 만들 수 있다. Stream stream = Stream.of("a", "b", "c", "d", "e"); stream.map(String::toUpperCase).forEach(System.out::println); 다음 처럼 empty 메서드를 이용해서 스트림을 비울 수 있다. Stream emptyStream = Stream.empty(); null이 될 수 있는 객체로 스트림 만들기 java9에서는 null이 될 수 있는 개체를 스트림으로 만들 수 있는 새로운 메소드가 추가되었다. ..
· Java
이 전 글에는 스트림(Stream)이란 무엇인가?를 알아보았다. 그럼 스트림 API가 지원하는 다양한 연산을 알아보자. 필터링 Predicate로 필터링 (filter) 스트림 인터페이스는 filter 메서드를 지원한다. filter 메서드는 Predicate를 인수로 받아서 일치하는 모든 요소를 포함하는 스트림으로 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); 고유 요소 필터링 (distinct) 스트림은 고유 요소(Primary)로 이루어진 스트림을 반환하는 distinct 메서드도 지원한다.(고유 여부는 객체의 hashCode, equals로 결정) List numbers = Array..
· Java
거의 모든 자바 애플리케이션은 컬렉션으로 데이터를 그룹화하고 처리하는 과정을 포함한다. 예를 들어 가격이 3,000만원 이하의 자동차 정보를 조회할 때는 아래처럼 SQL문을 작성한다. SELECT * FROM Car WHERE price c.getPrice() c2.getPrice().compareTo(c1.getPrice())) // 비싼 차량부터 정렬 .map(Car::getName) // 자동차 이름 필터링 .collect(Collectors.toList()); Java 8 스트림 API의 특징을 다음처럼 요약할 수 있다. 선언형 : 더 간결하고 가독성이 좋아진다. 코드 조립 : 유연성이 좋아진다. 병렬화 : 성능이 좋아진다. 스트림(Stream)의 정의 스트림이란 '데이터 처리 연산을 지원하도록 ..
beekei
'STREAM' 태그의 글 목록 (2 Page)