728x90 stream3 [modern java in action] stream(5) 5-1 컬렉터린 무엇인가? → Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정한다. / collect로 결과를 수집하는 과정을 간단하고 유연한 방식으로 정의할 수 있다는 점이 장점 보통 함수를 요소로 변환할 때는 컬렉터를 적용하며 최종결과를 저장하는 자료구조에 값을 누적한다. 미리 정의된 컬렉터 스트림 요소를 하나의 값으로 리듀스하고 요약 요소 그룹화 요소 분할 5-2 리듀싱과 요약 → 컬렉터로 스트림의 모든 항목을 하나의 결과로 합칠 수 있다. 트리를 구성하는 다수준 맵, 메누의 말로리 합계를 가리키는 단순한 정수 등 다양한 형식으로 결과가 도출될 수 있다. long howManyDishes = menu.stream().collect(Collectors.counting().. 2021. 6. 24. [modern java in action] stream(4) 4-5 리듀싱 스트림의 모든 요소를 반복적으로 처리해서 값을 도출하는 연산을 리듀싱 연산이라고 한다. 함수형 프로그래밍 언어 용어로는 이 과정이 마치 종이를 작은 조각이 될 때까지 반복해서 접는 것과 비슷하다는 의미로 폴드라고 부른다. 1)요소의 합 (reduce) int sum = numbers.stream().reduce(0, (a,b) -> a + b); //누적값 계산 reduce( 초기값 , 두 요소를 조합해서 새로운 값을 만드는 BinaryOperator) 2)초기값 없음 Optional sum = numbers.stream().reduce((a , b) -> (a + b);) 이런경우 Optional객체를 반환한다. 스트림에 아무 요소도 없는 경우 초기값이 없으므로 reduce는 합계를 반환.. 2021. 6. 24. [modern java in action] Stream(1) 3-1 스트림이란? → 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소 특징 - 선언형 : 더 간결하고 가독성이 좋아진다. - 조립할 수 있음 : 유연성이 좋아진다. - 병렬화 : 성능이 좋아진다. 3-2 스트림 시작하기 - 연속된 요소 : 특정 요소 형식으로 이루어진 연속된 값 집합의 인터페이스 - 소스 : 컬렉션, 배열, I/O 자원 등의 데이터 제공 소스로부터 데이터를 소비한다 / 정렬된 컬렉션으로 스트림을 생성하면 정렬이 그대로 유지된다. - 데이터 처리 연산 : 함수형 프로그래밍 언어에서 지원하는 연산과 데이터베이스와 비슷한 연산을 지원한다. (filter, map, reduce, find, match, sort) / 스트림 연산은 순차적, 또는 병렬로 실행할 수 있다. 스트림 의 중.. 2021. 6. 24. 이전 1 다음 728x90