Stream

import java.util.Arrays;
Stream
자료가 모여있는 배열이나 컬렉션 또는 특정 범위 안에 있는 일련의 숫자를 처리하는
기능을 미리 구현해 높은 클래스(sorting, filter …)

stream을 활용하면 배열 컬렉션 등의 자료를 일관성 있게 처리 할 수 있다.(추상화 되어 있음)
int[] arr={1,2,3,4,5};
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
위와 같은 arr 배열 내의 정수를 출력하는 코드를 stream을 이용하여 아래와 같이 바꿀 수 있다.
int[] arr={1,2,3,4,5};
Arrays.stream(arr).forEach(n->System.out.println(n));
stream arthimetric
스트림 연산은 크게 중간 연산과 최종 연산 두 가지로 나누어 진다.
중간 연산은 자료를 거르거나 변경하여 또 다른 자료를 내부적으로 생성한다.
최종 연산은 생성된 내부 자료를 소모해 가면서 연산을 수행한다.
따라서 최종 연산은 마지막에 한번만 호출된다.
그리고 최종 연산이 호출되어야 중간 연산의 결과가 만들어 진다.
    중간 연산-filter(), map()
filter()
filter()는 조건을 넣고 그 조건에 참인 경우만 추출한다.
sList.stream().filter(s->s.length()>=5).forEach(s->System.out.println(s));
// filter , forEach .
위의 코드는 문자열의 길이가 5이상인 경우만 출력하는 코드이다.
map()
map()은 클래스가 가진 자료 중 이름만 출력한다.|
custommerList.stream().map(c->c.getName()).forEach(s->System.out.println(s));
    최종 연산-forEach(),count(),sum(),reduce(),max(),min(),average()
최종 연산은 스트림 자료를 소모하면서 연산을 수행하기 때문에 최종 연산이 수행되고 나면,
해당 스트림을 더 이상 사용할 수 없다.
IntArrayTest.java
스트림을 활용해 저수 배열에 대한 개수와 합을 출력하는 코드
package lambda;
import java.util.Arrays;
public class IntArrayTest {
public static void main(String[] args) {
int[] arr= {1,2,3,4,5};
int sumVal=Arrays.stream(arr).sum();
//count() long int
int count=(int)Arrays.stream(arr).count();
System.out.println(sumVal);
System.out.println(count);
}
}

15

5