-
그래서 Stream 이 뭔데? - JavaJava 2020. 6. 1. 18:23
tl;dr
Java 8 에는 stream, 로맨틱, 성공적
서론
Java 8 에서 발표한 stream 은 자바를 사용하던 사람에게는 가뭄에 단비와도 같은 소식이라고 할 수 있다. 실제로 코드작성하는데 스트레스를 줄여주었고 다른 사람들과 협업하는데에도 지대한 영향을 끼치고 있다.
그렇다면 stream 이 뭐길래 Java 와 stream 은 뗄래야 뗄 수 없는 관계가 되었을까?
이것을 알기 위해서는 stream 이전에 배열이나 리스트와 같은 컬렉션 인스턴스를 어떻게 처리했는지 알아야 한다. 그리고 stream 을 이용해서 얼마나 간단하게 표현할 수 있는지까지 알아보면 무조건 stream 을 이용해야 겠다고 생각하게 될 것이다.
본론
먼저 기존에 배열을 어떻게 처리했는지 알아보도록 하자.
1부터 10까지 담긴 배열을 생성하고 출력하고 싶을 때, 기존에는 아래와 같이 코드를 작성해야 했다.
int[] numArr = new int[10]; for(int i = 0; i < 10; i++) { numArr[i] = i + 1; } for(int i = 0; i < 10; i++) { System.out.println(numArr[i]); }
stream 을 이용해서 똑같이 작동하는 코드를 작성해 보면 아래와 같다.
int[] numArr = IntStream.rangeClosed(1, 10).toArray(); Arrays.stream(numArr).forEach(System.out::println);
....?!! 가독성도 좋아지고 편리해 보이지 않는가?
이렇게 코드를 작성하면 실수할 여지도 줄어들고 코드가 직관적이여서 다른사람과 협업하면서 코드리뷰를 하는데에도 이점이 많다.
그렇다면 stream 의 구성은 어떻게 되어있을까?
stream 은 크게 생성, 가공, 결과도출 총 3가지로 나눌 수 있다.
생성에는
- 배열 / 컬렉션 / 빈 스트림
- Stream.builder() / Stream.generate() / Stream.iterate()
- 기본 타입형 / String / 파일 스트림
- 병렬 스트림 / 스트림 연결하기
가공에는
- Filtering
- Mapping
- Sorting
- Iterating
결과 도출에는
- Calculating
- Reduction
- Collecting
- Matching
- Iterating
이 있다.
각 부분에 대한 더자세한 설명은 이후 포스팅에 세분화해서 다뤄보려고 한다.
결론
stream 에 대해 자세하게 알아보기에 앞서 기본적인 내용을 알아보았다. stream 은 앞서 말한 것처럼 배열이나 리스트를 처리하는데 있어서 손쉽게 코드작성을 할 수 있도록 도와주고 협업할 때에는 간결한 표현이 가능해 지므로 코드리뷰를 보다 쉽게 할 수 있도록 도와준다.
이래도 stream 쓸래? 안쓸래?
난 쓸래!!!
이번 포스팅에서는 간단하게 stream 에 대해 알아보았다. 이후에 stream 의 각 항목 에 대해서 자세히 다뤄 보도록 하겠다.
참조
https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html
'Java' 카테고리의 다른 글
접근제한자, 접근제어자 (public, private, protected, default) 가 뭔데? - Java (0) 2020.06.04 입력(Input)이란 무엇인가? (Scanner과 BufferedReader 에 대해 이해하기) - Java (0) 2019.07.05 자바[JAVA]란? (0) 2019.06.25