정의

스트림 : 데이터 소스를 추상화하고, 이를 다루는데 자주 사용되는 메서드를 정의해놓은 것

즉 우리가 기존에 데이터를 사용할 때 반복문 등을 활용하였을 때 재사용성이 떨어지고 같은 기능의 메서드의 중복 정의를 했던 것들을 추상화하여 더욱 간단하게 사용하는 것을 의미한다.


간단한 사용법

//기존 데이터의 배열과 List 형태
String strArr = {"aaa", "bbb", "ccc"}
List<String> strList = Arrays.asList(strArr);

//해당 데이터 기반 스트림 생성
Stream<String> strStream1 = Arrays.stream(strArr);
Stream<String> strStream2 = strList.stream();

//출력 형태는 strStream1과 strStream2 모두 동일
strStream1.sorted().forEach(System.out::println);

기본 특징

  1. 스트림은 데이터를 변경하지 않고, 결과물을 컬렉션(List 등)이나 배열에 담아서 반환할 수 있다.
  2. 스트림은 다시 사용할 수 없다. 필요 시 새로운 스트림을 생성해야한다.
  3. 스트림은 forEach() 메서드를 통해 내부반복으로 반복문을 숨기고 코드를 간결하게 만든다.