IMCAT.DEV
로그인 가입
Dart 입문 자료구조

Dart 리스트 기초

Dart 리스트 기초 — 초급

리스트 기초

1. 도입 (왜 배워야 하는가)

Dart에서 리스트(List)는 데이터 구조의 핵심 요소 중 하나로, 데이터를 효율적으로 저장하고 관리하는 데 필수적입니다. 실무에서는 사용자 정보를 저장하거나, 쇼핑몰의 장바구니에 담긴 상품 목록을 관리하는 등 다양한 상황에서 리스트를 사용합니다. 만약 리스트를 잘 이해하지 못한다면, 데이터를 효과적으로 저장하고 처리하는 데 어려움을 겪을 수 있습니다. 이로 인해 복잡한 데이터 처리 로직이 필요해지거나, 성능 저하가 발생할 수 있습니다.

2. 핵심 개념 설명

리스트는 데이터의 집합을 순서대로 저장하는 컬렉션입니다. 리스트의 각 요소는 인덱스를 통해 접근할 수 있으며, 인덱스는 0부터 시작합니다.

실생활 비유

리스트는 마치 서랍 속의 물건들처럼 생각할 수 있습니다. 서랍에 여러 물건이 있을 때, 각 물건은 특정 위치에 놓여져 있고, 그 위치를 통해 원하는 물건을 쉽게 찾을 수 있습니다.

관련 용어 정리

용어설명
리스트데이터의 순서가 있는 집합
인덱스리스트에서 각 요소의 위치를 나타내는 숫자
요소리스트에 포함된 개별 데이터

3. 기본 코드 예제

리스트의 기본적인 사용법을 알아보겠습니다.

void main() {
  // 리스트 생성
  List<String> fruits = ['사과', '바나나', '체리'];

  // 리스트에 요소 추가
  fruits.add('포도');

  // 리스트의 첫 번째 요소 출력
  print(fruits[0]); // 사과

  // 리스트의 모든 요소 출력
  for (String fruit in fruits) {
    print(fruit);
  }
}

실행 결과

사과
사과
바나나
체리
포도

코드 한 줄씩 동작 설명

  1. void main() { - Dart 프로그램의 시작점인 main 함수를 정의합니다.
  2. List<String> fruits = ['사과', '바나나', '체리']; - 문자열 타입의 리스트를 생성하고 초기화합니다.
  3. fruits.add('포도'); - 리스트에 '포도'라는 요소를 추가합니다.
  4. print(fruits[0]); - 리스트의 첫 번째 요소인 '사과'를 출력합니다.
  5. for (String fruit in fruits) { - 리스트의 모든 요소를 반복하여 처리합니다.
  6. print(fruit); - 반복문 안에서 현재 요소를 출력합니다.
  7. 4. 실전 활용 예제

    예제 1: 쇼핑몰 장바구니 구현

    장바구니에 담긴 상품을 리스트로 관리하는 예제입니다.

    void main() {
      List<String> cart = []; // 장바구니 리스트 생성
    
      // 상품 추가
      cart.add('티셔츠');
      cart.add('바지');
      
      // 장바구니 출력
      print('장바구니에 담긴 상품: $cart');
    }

    상황 설명: 사용자가 '티셔츠'와 '바지'를 장바구니에 추가하면, 리스트를 통해 상품을 관리할 수 있습니다.

    예제 2: 학생 성적 관리

    학생의 성적을 리스트로 저장하고 평균을 계산하는 예제입니다.

    void main() {
      List<double> grades = [85.0, 90.5, 78.0]; // 성적 리스트 생성
      double total = 0;
    
      // 성적 합계 계산
      for (double grade in grades) {
        total += grade;
      }
    
      double average = total / grades.length; // 평균 계산
      print('학생의 평균 성적: $average');
    }

    상황 설명: 학생들의 성적을 리스트에 저장하고, 반복문을 통해 평균 성적을 계산하는 로직입니다.

    5. 흔한 실수와 주의사항

    실수 1: 인덱스 초과

    void main() {
      List<String> fruits = ['사과', '바나나'];
      print(fruits[2]); // 오류 발생
    }

    올바른 코드:

    void main() {
      List<String> fruits = ['사과', '바나나'];
      print(fruits[1]); // 바나나
    }

    설명: 리스트의 인덱스는 0부터 시작하므로, 인덱스 2는 존재하지 않아 오류가 발생합니다.

    실수 2: 리스트 초기화 실수

    void main() {
      List<String> fruits; // 초기화되지 않은 리스트
      fruits.add('사과'); // 오류 발생
    }

    올바른 코드:

    void main() {
      List<String> fruits = []; // 리스트 초기화
      fruits.add('사과'); // 정상 작동
    }

    설명: 리스트를 사용하기 전에 반드시 초기화해야 합니다.

    6. 정리

    • 리스트는 데이터의 순서가 있는 집합으로, 인덱스 기반으로 접근합니다.
    • 리스트를 사용하면 여러 데이터를 효율적으로 관리할 수 있습니다.
    • 실무에서는 쇼핑몰 장바구니, 성적 관리 등 다양한 분야에서 리스트를 활용합니다.
    • 다음에 학습하면 좋은 주제:

    • 리스트의 다양한 메서드 (예: remove, insert, sort)
    • Dart의 다른 컬렉션 타입 (예: Set, Map)