: 컬렉션이나 배열의 원소를 흐름으로 간주하는 것
: 수학적 함수의 계산을 통해 자료를 처리하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임
함수형 프로그래밍이기 위한 조건,특징
side effect
존재하지 않는다.외부 반복자와의 차이
어떻게
구현해야 될지를 중심적으로 생각해야 되지만, 내부 반복자(stream)의 경우에는 컬렉션 내부에서 요소를 반복시키고, 개발자는 요소당 처리할 코드만 작성하면 된다. 즉, 객체를 통해 무엇을
할지를 중심적으로 생각할 수 있다. 하지만, stream에 내부적으로 이미 구현돼있는 함수를 사용하는 것이기 때문에, 기능 사용에 있어서 제한될 수 있다.스트림 얻기
list.stream()
과 같이 사용하면 된다.Arrays.stream(int [] arr)
과 같이 사용IntStream stream = IntStream.rangeClosed(1, 100);
여러 개의 스트림이 연결된 구조 컬렉션/배열.스트림얻기().중간스트림().중간스트림().최종처리()
filter, distinct
flatMapXXX, mapXXX, asDobuleStream()
sorted
peek
Optional 클래스 : 반환 값이 있을 수도 있고, 없을 수도 있을 때 사용한다.
OptionalDobule optional = list.stream().mapToInt(Integer :: intValue).average();
System.out.println(optional.isPresent() ? optional.getAsdouble() : "0.0");
optional에 값이 들어있다면 출력, null이라면 “0.0” 출력하는 코드
allMatch, anyMatch, noneMatch
boolean
count, max, min, average, sum, findFirst
collect
forEach