스트림

김민성·2022년 7월 14일
0

Java

목록 보기
38/47
post-thumbnail

스트림 (Stream)

스트림은 데이터 소스의 종류에 상관 없이, 데이터를 다루는데 자주 사용되는 메서드를 정의해 놓은 인터페이스이다.

String[] arr = {"a","b","c"}
List<Stirng> list = Arrays.asList(arr);

// 스트림의 생성
Stream<String> stream1 = list.stream();
Stream<String> stream2 = Arrays.stream(arr);

// 스트림의 출력
stream1.forEach(System.out::print);
stream2.forEach(System.out::print);

위와 같이 두 스트림의 데이터 소스는 다르지만, 출력하는 방법은 완전히 동일하다.

매개변수 안의 System.out::println(str)->System.out.println(str) 의 람다식과 같다.

스트림의 특징

  • 데이터 소스를 변경하지 않는다.

    데이터 소스로부터 데이터를 읽기만 할 뿐, 데이터 소스를 변경하지 않는다.

  • 일회용이다.

    Iterator 처럼 일회용이다. 한번 사용하면 닫혀서 다시 사용할 수 없다.

    stream.forEach(System.out::println);
    // int numOrStr = stream.count(); -> 에러. 스트림이 이미 닫혔음.
  • 작업을 내부 반복으로 처리한다.

    forEach() 메서드 내부를 보면 매개변수에 대입된 람다식을 데이터 소스의 모든 요소에 적용한다.

    이렇게 메서드 내부에 반복문을 정의해 좀 더 간결하게 코드를 작성할 수 있는 것이다.

    for(String str : strList){
        System.out.println(str);
    }
    
    // stream을 이용한 간결한 반복
    stream.forEach(System.out::println);

0개의 댓글