Dart의 Iterable과 Stream의 차이

jaybon·2023년 3월 12일
0

다트 dart

목록 보기
3/3

Dart의 Iterable과 Stream은 모두 데이터 컬렉션을 변환하고 필터링하는 데 사용할 수 있는 where() 및 map()과 같은 메서드를 제공합니다. 그러나 둘 사이에는 몇 가지 주요 차이점이 있습니다.

  1. 평가: where() 및 map()과 같은 반복 가능한 메서드는 열심히 평가됩니다. 즉, Iterable에서 where()와 같은 메서드를 호출하면 변환되거나 필터링된 데이터가 포함된 새 Iterable이 즉시 반환됩니다. 반대로 where() 및 map()과 같은 Stream 메서드는 느리게 평가됩니다. 즉, Stream에서 where()와 같은 메서드를 호출하면 즉시 새 Stream이 반환되지 않습니다. 대신 데이터가 소비될 때 데이터를 변환하는 새로운 스트림 변환기를 생성합니다.
  2. 비동기성: 스트림은 본질적으로 비동기적이므로 시간이 지남에 따라 생성되는 데이터를 처리할 수 있습니다. 반면 Iterable 메서드는 동기식이며 컬렉션에 이미 있는 데이터만 처리할 수 있습니다.
  3. 데이터 유형: Iterable 메서드는 목록, 세트 및 맵을 포함한 모든 유형의 컬렉션과 함께 작동할 수 있습니다. 그러나 스트림 메서드는 데이터 스트림에서만 작동할 수 있습니다.
  4. 사용 사례: Iterable 메서드는 일반적으로 이미 메모리에 있는 데이터 컬렉션을 변환하고 필터링하는 데 사용됩니다. 반면에 스트림 방법은 네트워크 연결을 통해 또는 파일에서 수신되는 데이터를 변환하고 필터링하는 데 자주 사용됩니다.

요약하면 Iterable과 Stream 모두 데이터 컬렉션을 변환하고 필터링하는 데 사용할 수 있는 where() 및 map()과 같은 메서드를 제공하는 반면 Streams는 시간이 지남에 따라 생성되고 느리게 평가되는 데이터를 처리하도록 설계되었으며 Iterable 메서드는 이미 메모리에 있고 열심히 평가되는 데이터 모음을 처리하도록 설계되었습니다.

profile
티스토리 블로그 https://ondolroom.tistory.com/

0개의 댓글