List와 Iterable의 차이점

하요·2024년 7월 1일
0
post-thumbnail

List와 Iterable의 차이점

  • List: Iterable의 하위 클래스로 배열의 모든 원소를 메모리에 올려두고 사용합니다.
  • Iterable: 순차적으로 접근 가능한 요소의 모음으로, 접근하는 요소만 메모리에 올립니다.

List의 특성

  • 고정 크기 또는 동적 크기: List는 고정 크기 리스트와 동적 크기 리스트가 있습니다.
  • 빠른 인덱스 접근: 인덱스를 사용하여 요소에 빠르게 접근할 수 있습니다.
  • 전체 요소 메모리 로드: 리스트의 모든 요소가 메모리에 로드됩니다.

Iterable의 특성

  • 지연 계산: 요소에 접근할 때마다 값을 생성하거나 가져옵니다.
  • 메모리 효율성: 필요한 시점에만 요소를 생성하므로 메모리 사용이 효율적입니다.
  • 무한 컬렉션 가능: 무한히 많은 요소를 가질 수 있으며, 필요한 만큼만 계산합니다.

Iterable의 예시

2의 1000승 크기의 배열은 너무 커서 메모리에 한 번에 생성할 수 없습니다. List는 메모리 부족으로 실행할 수 없지만, Iterable은 에러가 나지 않습니다.

Iterable<int> generateNumbers() sync* {
  int number = 1;
  while (true) {
    yield number;
    number++;
  }
}

void main() {
  var bigIterable = generateNumbers().take(1000);

  // Iterable은 필요한 시점에 요소를 생성하므로 메모리 효율적입니다.
  print(bigIterable.take(10).toList()); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}

추가 팁

  • 효율성 고려: 컬렉션의 크기가 크면, List 대신 Iterable을 사용하여 메모리 사용을 최적화할 수 있습니다.
  • 불변성 유지: Iterable을 사용하면 불변성을 유지하며 요소를 생성할 수 있습니다. 이는 상태 관리에 유리합니다.

관련 자료

profile
flutter 개발자(진)

0개의 댓글