정의
- Java 8부터 제공되는 한번 더 추상화된 자료구조와 자주 사용하는 프로그래밍 API를 제공한것이다.
- 람다를 활용하여 배열과 컬렉션을 함수형으로 처리할 수 있는 API이다.
특징
- 원본의 데이터를 변경하지 않는다.
- 일회용이며 한번 사용하면 재사용이 불가하다.
- 스트림은 만들기 -> 가공하기 -> 결과 만들기 순으로 진행된다.
자주 사용되는 것들
- 만들기
String[] array = new String[]{"a", "b", "c"}
Stream<String> stream = Arrays.stream(arr); // 배열 스트림
List<String> list = Arrays.asList("1","2","3");
Stream<String> stream = list.stream(); //컬렉션 스트림
List<객체> resultList = 객체 리스트.stream()
.filter(객체 A -> (Integer) A.getValue() > 숫자)A의 value가 숫자보다 큰 것만 스트림에 삽입하라
.toList(); // 필터
Stream<String> exampleStream = list.stream().map(String::toUpperCase);
//[A,B,C] 대문자로 변환
또는
.map(Integers::parseInt);
// 문자열 -> 정수로 변환 //컬렉션 스트림
public static OperatorType FindOperatorType(String type){
return Arrays.stream(values())
.filter(x -> x.getOperation().equals(type))
.findAny().orElse(null);
} //type과 일치하는 열거형 Enum 상수를 하나를 리턴한다.
결론
- 모든 stream 메소드를 다루지 못해 아쉽지만 stream을 사용함으로써 불필요한 절차나 코드를 획기적으로 줄일 수 있어 적극적으로 활용할 수 있을거 같다.