[ Dart&Flutter ] Dart 컬렉션(Collection) 심화 학습 – 실습 예제 포함

Dart 컬렉션(Collection) 심화에 대해 학생들이 개념을 먼저 이해하고, 실습 예제 2개를 통해 익히는 과정입니다. 







📦 Dart 컬렉션(Collection) 심화 학습 – 실습 예제 포함



✅ 1. List, Set, Map 고급 사용법

📘 개념 설명

  • List: 순서가 있는 값들의 모음 (중복 가능)

  • Set: 순서 없음, 중복 불가

  • Map: key : value 형태로 데이터를 저장



🏆 실습 예제 1: Set으로 중복 제거하기

void main() {
  List<String> names = ['지훈', '민지', '지훈', '윤서'];
  Set<String> uniqueNames = Set.from(names);

  print(uniqueNames);
}

✅ 출력:

{지훈, 민지, 윤서}



🏆 실습 예제 2: Map을 사용해 점수표 만들기

void main() {
  Map<String, int> scores = {
    '지훈': 90,
    '민지': 85,
    '윤서': 95,
  };

  print('민지의 점수: ${scores['민지']}');
}




✅ 2. 컬렉션 if & 컬렉션 for 문법

📘 개념 설명

  • Dart는 **List 안에서 조건(if)이나 반복(for)**을 직접 사용할 수 있어요.

var list = [1, 2, if (true) 3]; // => [1, 2, 3]



🏆 실습 예제 1: 조건에 따라 값 추가

void main() {
  bool isHoliday = true;

  List<String> activities = [
    '학교 가기',
    if (isHoliday) '영화 보기',
  ];

  print(activities);
}

✅ 출력:

[학교 가기, 영화 보기]





🏆 실습 예제 2: for 문으로 리스트 만들기

void main() {
  List<String> messages = [
    for (int i = 1; i <= 3; i++) '알림 $i',
  ];

  print(messages);
}

✅ 출력:

[알림 1, 알림 2, 알림 3]



✅ 3. Null-aware 연산자 (??, ??=, ?. )

📘 개념 설명

연산자

설명

예시

??

null이면 오른쪽 값 사용

a = name ?? '기본값'

??=

왼쪽 값이 null일 때만 할당

a ??= '설정'

?.

null일 경우 접근하지 않음 (에러 방지)

a?.length



🏆 실습 예제 1: null 대체 값 설정

void main() {
  String? userName;

  String nameToUse = userName ?? '손님';
  print('안녕하세요, $nameToUse!');
}

✅ 출력:

안녕하세요, 손님!





🏆 실습 예제 2: ?. 연산자로 안전하게 접근

void main() {
  String? message;

  print('글자 수: ${message?.length}');
}

✅ 출력:

글자 수: null
null이라도 에러가 나지 않고 처리됨!




✅ 4. Spread Operator ( ... , ...? )

📘 개념 설명

  • ...: 리스트를 다른 리스트에 펼칠 때 사용

  • ...?: null 리스트를 펼칠 때 안전하게 사용



🏆 실습 예제 1: 리스트 두 개 합치기

void main() {
  List<String> list1 = ['a', 'b'];
  List<String> list2 = ['c', 'd'];

  List<String> all = [...list1, ...list2];
  print(all);
}

✅ 출력:

[a, b, c, d]



🏆 실습 예제 2: null-safe spread

void main() {
  List<String>? maybeList;

  List<String> result = ['start', ...?maybeList, 'end'];
  print(result);
}

✅ 출력:

[start, end]
...? 덕분에 null이어도 오류 없음




✅ 5. 고급 정렬, 필터링, 매핑 ( wheremap, reducefold )

📘 개념 설명

메서드

설명

map()

값을 하나씩 바꿔서 새 리스트 생성

where()

조건에 맞는 값만 추출

reduce()

리스트를 하나의 값으로 압축

fold()

초기값을 설정하고 하나의 값으로 압축



🏆 실습 예제 1: where + map 조합

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];

  var evenSquares = numbers
      .where((n) => n % 2 == 0)
      .map((n) => n * n)
      .toList();

  print(evenSquares);
}

✅ 출력:

[4, 16]





🏆 실습 예제 2: reduce로 총합 구하기

void main() {
  List<int> scores = [10, 20, 30];

  int sum = scores.reduce((a, b) => a + b);
  print('총합: $sum');
}

✅ 출력:

총합: 60





🎓 마무리 요약

기능

설명

List, Set, Map

각각 순서, 중복X, 키-값 구조

컬렉션 if, for

리스트 안에서 조건과 반복 가능

Null-aware 연산자

null 처리 간편하게

Spread Operator

리스트를 펼치거나 null-safe로 결합

where/map/reduce

리스트 처리에 필수인 고급 메서드



댓글 쓰기