Java Stream - 01. Stream이란
JAVA 8에 소개된 추상화 개념이며, 데이터의 흐름이라고 이해하면 쉽다. 다시말해
stream
의미 그대로 시냇물이며, 그 내부에는 각각의 데이터란 물고기가 존재한다.
Stream 생성
Array에서 생성
Long[] ids = {1L, 2L, 3L, 4L};
// case #1
Stream<Long> idStreamA = Arrays.stream(ids);
// case #2
Stream<Long> idStreamB = Stream.of(ids);
// case #3
Stream<Long> idStreamC = Stream.of(ids[0], ids[1], ids[2], ids[3]);
// case #4 빌더 활용
Stream.Builder<Long> idStreamBuilder = Stream.builder();
for (Long id : ids) {
idStreamBuilder.accept(id);
}
Stream<Long> idStreamD = idStreamBuilder.build();
List에서 생성
Long[] ids = {1L, 2L, 3L, 4L};
List<Long> idList = new ArrayList<>(Arrays.asList(ids));
Stream<Long> idStreamA = idList.stream();
Stream operation
filter
Stream내 데이터를 필터링한다.
Long[] ids = {1L, 2L, 3L, 4L}
Stream<Long> idStream = Arrays.stream(ids);
idStream
.filter(id -> id % 2 == 0)
.forEach(System.out::println);
/* Result
2
4
*/
map
Stream내 데이터를 가공한다.
Long[] ids = {1L, 2L, 3L, 4L};
Stream<Long> idStream = Arrays.stream(ids);
idStream
.filter(id -> id % 2 == 0)
.map(id -> id + 10)
.forEach(System.out::println);
/* Result
12
14
*/
sorted
Stream내 데이터를 정렬한다.
Long[] ids = {1L, 2L, 3L, 4L};
Stream<Long> idStream = Arrays.stream(ids);
idStream
.filter(id -> id % 2 == 0)
.map(id -> id + 10)
.sorted(Comparator.reverseOrder())
.forEach(System.out::println);
/* Result
14
12
*/
limit
Stream내 데이터 수를 한정한다.
Long[] ids = {1L, 2L, 3L, 4L};
Stream<Long> idStream = Arrays.stream(ids);
idStream
.limit(2)
.forEach(System.out::println);
/* Result
1
2
*/
skip
Stream내 데이터 중 첫번째 요소부터 제외시킨다.
Long[] ids = {1L, 2L, 3L, 4L};
Stream<Long> idStream = Arrays.stream(ids);
idStream
.skip(1)
.limit(2)
.forEach(System.out::println);
/* Result
2
3
*/
reduce
Stream의 여러 데이터들을 연산을 통해서 하나의 결과값으로 출력
Long[] ids = {1L, 2L, 3L, 4L};
Stream<Long> idStream = Arrays.stream(ids);
Long sum = idStream
.reduce(Long::sum).orElse(null);
/* Result
10
*/
collect
Stream을 데이터구조로 실체화한다.
Long[] ids = {1L, 2L, 3L, 4L};
Stream<Long> idStream = Arrays.stream(ids);
List<Long> idList = idStream
.filter(id -> id % 2 == 0)
.map(id -> id + 10)
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
/* Result
[14, 12]
*/
Leave a comment