guricode

Dart 간단 정리 - 컬렉션 고차 함수 & Map 고급 활용 본문

앱/Flutter&Dart

Dart 간단 정리 - 컬렉션 고차 함수 & Map 고급 활용

agentrakugaki 2025. 6. 24. 15:21

이번 포스팅에서는 Dart에서 자주 쓰이는 컬렉션 고차 함수들과 Map 고급 활용 방법을 예제를 중심으로 정리해봤다.


 고차 함수(Higher-Order Functions)란?

함수형 프로그래밍에서 자주 쓰이는 개념으로, 함수를 매개변수로 넘기거나 함수 자체를 리턴할 수 있는 함수. Dart의 컬렉션 메서드들도 대부분 이 개념을 바탕으로 만들어짐.


 List 고차 함수 예제

1. forEach() - 요소 순회

List<String> fruits = ['사과', '바나나', '귤'];
fruits.forEach((fruit) {
  print('맛있는 $fruit');
});

2. map() - 값 변환 후 새 리스트 생성

List<int> numbers = [1, 2, 3];
List<int> doubled = numbers.map((n) => n * 2).toList();
print(doubled); // [2, 4, 6]

3. where() - 조건에 맞는 요소 필터링

List<int> numbers = [1, 2, 3, 4, 5];
List<int> even = numbers.where((n) => n % 2 == 0).toList();
print(even); // [2, 4]

4. fold() - 누적 계산

List<int> numbers = [1, 2, 3, 4, 5];
int sum = numbers.fold(0, (prev, element) => prev + element);
print(sum); // 15

5. any() / every() - 조건 판별

List<int> scores = [80, 90, 70];
print(scores.any((score) => score < 60)); // false
print(scores.every((score) => score >= 70)); // true

Map 고급 활용

1. forEach() - 모든 키-값 순회

Map<String, int> scores = {'철수': 90, '영희': 85};
scores.forEach((key, value) {
  print('$key 학생의 점수는 $value점입니다.');
});

2. map() - 새 Map 반환 (key 또는 value 가공)

Map<String, int> scores = {'철수': 90, '영희': 85};
var bonusScores = scores.map((key, value) => MapEntry(key, value + 5));
print(bonusScores); // {철수: 95, 영희: 90}

3. containsKey() / containsValue()

Map<String, int> scores = {'철수': 90, '영희': 85};
print(scores.containsKey('철수')); // true
print(scores.containsValue(100)); // false

4. keys, values 사용

Map<String, int> scores = {'철수': 90, '영희': 85};
print(scores.keys); // (철수, 영희)
print(scores.values); // (90, 85)

5. Map ↔ List 변환

Map<String, int> scores = {'철수': 90, '영희': 85};
var entries = scores.entries.toList();
print(entries); // [MapEntry(철수: 90), MapEntry(영희: 85)]

var backToMap = Map.fromEntries(entries);
print(backToMap); // {철수: 90, 영희: 85}