- 
          
          그래서 Stream 이 뭔데? - JavaJava 2020. 6. 1. 18:23 tl;drJava 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.util.stream (Java Platform SE 8 ) Interface Summary Interface Description BaseStream > Base interface for streams, which are sequences of elements supporting sequential and parallel aggregate operations. Collector A mutable reduction operation that accumulates input elements into a mutab docs.oracle.com 'Java' 카테고리의 다른 글접근제한자, 접근제어자 (public, private, protected, default) 가 뭔데? - Java (0) 2020.06.04 입력(Input)이란 무엇인가? (Scanner과 BufferedReader 에 대해 이해하기) - Java (0) 2019.07.05 자바[JAVA]란? (0) 2019.06.25