자바 8에서 추가한 스트림(Streams)
은 람다를 활용할 수 있는 기술 중 하나이다. 자바 8 이전에는 배열 또는 컬렉션의 인스턴스를 다루는 방법은 for
또는 foreach
문을 돌면서 요소 하나씩 꺼내 다루는 방법이였다. 스트림은 데이터를 추상화해서 다루기 때문에, 다양한 형태로 저장된 데이터를 위한 공통된 방법을 제공한다.
스트림은 데이터의 흐름
이다. 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있다. 또한 람다를 이용해서 코드의 양을 줄이고 간결하게 표현할 수 있다. 또 하나의 장점은 병렬처리가 가능하다. 즉, 쓰레드를 이용해 많은 요소들을 빠르게 처리할 수 있다.
filter
map
peek
sorted
limit
distinct
skip
count
min
max
sum
average
reduce
forEach
collect
iterator
// 정수형 배열에서 스트림 생성
Integer[] arr1 = new Integer[] {1, 5, 11, 13, 20, 52};
Stream stream1 = Arrays.stream(arr1);
stream1.map(i -> i * 2);
stream1.filter(i -> i % 2 == 0); // 재사용이 불가능하기 때문에 에러 발생!
// 정수형 배열에서 스트림 생성
Integer[] arr2 = new Integer[] {1, 5, 11, 13, 20, 52};
Stream stream2;
stream2 = Arrays.stream(arr2)
.filter(i -> i % 2 != 0) // {1, 5, 11, 13}
.map(i -> i * 2); // {2, 10, 22, 26}
https://futurecreator.github.io/2018/08/26/java-8-streams/
https://jeong-pro.tistory.com/165