본문 바로가기

자바개발자

java16.stream.aggregate /* 집계(count(),sum(),average(),max(), min()...) 집계(aggregate)는 최종처리기능으로 요소들을 처리해서 갯수, 합계, 평균, 최대/최소값 등과 같이 하나의 값으로 집계하는 기능을 말한다. 집계는 대용량의 데이터를 가공해서 축소하는 reduction이라고 볼 수 있다. 스트림이 제고하는 기본집계 메서드는 1. count() : 요소의 갯수를 long타입으로 리턴 2. findFirst() : 첫번째 요소를 OptionalXXX타입으로 리턴 3. max(Comparator) : 요소중 최대요소를 OptionalXXX타입으로 리턴 4. min(Comparator) : 요소중 최소요소를 OptionalXXX타입으로 리턴 5. average() : 요소들의 평균값을 Opt.. 더보기
java16.stream.pipeline /* 스트림 파이프라인? 대량의 데이터를 가공해서 축소하는 것을 일반적으로 리덕션(Reduction)이라고 하는데, 데이터의 합계, 평균, 카운팅, 최대/최소값 등이 대표적인 reduction의 결과이다. 그러나 컬렉션의 요소를 리덕션의 결과물로 바로 집계할 수 없을 경우에는 집계하기 편리하도록 필터링, 매핑, 그룹핑등의 중간처리를 할 것이 필요하다. 1. 중간처리와 최종처리 스트림은 데이터의 필터링, 매핑, 정렬, 그룹핑등의 중간처리와 합계, 평균 등의 최종처리를 파이프 라인(Pipe Line)으로 해결한다. 파이프라인은 여러개의 스트림이 연결되어 있는 구조를 말한다. 중간스트림이 생성될 때 요소들이 바로 중간처리 되는 것이 아니라 최종처리가 시작되기 전까지는 중간처리가 지연(lazy)된다. 최종처리가.. 더보기
java16.stream.intro /* Stream(스트림) 스트림은 java8부터 추가된 컬렉션, 배열에 저장된 요소(값 or 객체)를 하나씩 꺼내와서 람다식(Functional Interface) 으로 처리할 수 있도록 해주는 반복자이다. Java7까지는 List컬렉션에서 요소를 순차적으로 처리하기 때문에 iterator 를 사용해 왔지만 컬렉션의 Stream()메서드로 Stream객체를 얻은 후에 람다식으로 컬렉션의 요소를 하나씩 처리할 수 있게 되었다. Iterator와 Stream을 비교해보면 Stream을 사용하는 것이 훨씬 단순하게 사용할 수 있다. Stream은 Iterator와 비슷한 역할을 하는 반복자이지만 1. 람다식으로 처리할 수 있다. 2. 내부반복자를 사용함으로써 병렬처리가 쉽다. 3. 중간처리, 최종처리작업을 .. 더보기