학습
Dart 컬렉션 API
Dart 컬렉션 API — 중급
컬렉션 API
1. 도입 (왜 배워야 하는가)
Dart의 컬렉션 API는 개발자에게 데이터를 구조적으로 관리하고 조작하는 방법을 제공합니다. 실무에서는 데이터의 저장, 조회, 수정, 삭제가 빈번하게 발생하며, 이러한 작업을 효율적으로 처리하기 위해 컬렉션을 이해하고 활용하는 것이 필수적입니다.
만약 컬렉션 API를 모르고 데이터를 단순한 변수로만 처리한다면, 데이터의 양이 많아질수록 관리가 어려워지고, 성능 저하나 오류의 원인이 될 수 있습니다. 예를 들어, 쇼핑몰에서 장바구니 기능을 구현할 때, 제품 목록을 효율적으로 관리하지 않으면 사용자는 원하는 제품을 찾기 어려워하고 불편을 느낄 것입니다.
2. 핵심 개념 설명
Dart의 컬렉션 API는 크게 List, Set, Map 세 가지 주요 자료구조로 구성됩니다. 이들을 각각 정의하고, 실생활 비유를 통해 쉽게 설명하겠습니다.
| 용어 | 설명 | 비유 |
|---|---|---|
| List | 순서가 있는 데이터의 집합으로, 인덱스를 통해 접근 가능. | 책장에 꽂힌 책들 (번호가 매겨져 있음) |
| Set | 중복을 허용하지 않는 데이터의 집합. | 친구 목록 (이름이 중복될 수 없음) |
| Map | 키와 값의 쌍으로 이루어진 데이터 구조. | 주소록 (이름(키)과 전화번호(값)) |
이러한 컬렉션을 통해 필요한 데이터를 효율적으로 저장하고 관리할 수 있습니다.
3. 기본 코드 예제
가장 기본적인 리스트 사용법을 살펴보겠습니다.
void main() {
// 정수형 List 생성
List<int> numbers = [1, 2, 3, 4, 5];
// List에 요소 추가
numbers.add(6);
// List의 모든 요소 출력
for (var number in numbers) {
print(number);
}
}
실행 결과:
1
2
3
4
5
6
코드 한 줄씩 동작 설명:
void main() {: 프로그램의 시작점인 main 함수를 정의합니다.List<int> numbers = [1, 2, 3, 4, 5];: 정수형 요소를 가진 리스트를 초기화합니다.numbers.add(6);: 리스트에 6이라는 요소를 추가합니다.for (var number in numbers) {: 리스트의 모든 요소를 순회합니다.print(number);: 각 요소를 콘솔에 출력합니다.
4. 실전 활용 예제
예제 1: 쇼핑몰 장바구니 구현
class Cart {
List<String> items = [];
void addItem(String item) {
items.add(item);
print('$item이 장바구니에 추가되었습니다.');
}
void showCart() {
print('장바구니 내용: $items');
}
}
void main() {
Cart cart = Cart();
cart.addItem('사과');
cart.addItem('바나나');
cart.showCart();
}
상황 설명: 쇼핑몰에서 사용자가 상품을 장바구니에 추가하고, 현재 장바구니에 어떤 상품이 담겨 있는지 확인할 수 있습니다.
예제 2: 중복 없는 친구 목록 관리
void main() {
Set<String> friends = {'Alice', 'Bob', 'Charlie'};
friends.add('Alice'); // 중복 추가
friends.add('David');
print('친구 목록: $friends');
}
상황 설명: 친구 목록에서 중복을 허용하지 않고, 새로운 친구를 추가할 수 있습니다.
5. 흔한 실수와 주의사항
- 리스트에 중복된 값 추가하기:
- Map에서 키를 잘못 사용하기:
- Dart의 컬렉션 API는 List, Set, Map 세 가지 주요 자료구조로 구성된다.
- List는 순서가 있는 데이터, Set은 중복을 허용하지 않는 데이터, Map은 키-값 쌍으로 데이터를 관리한다.
- 실무에서 컬렉션을 사용하면 데이터를 효율적으로 관리하고 조작할 수 있다.
- 다음에 학습하면 좋은 주제는
비동기 프로그래밍과Flutter UI 구성입니다.
- 잘못된 코드:
List<String> fruits = ['사과', '바나나', '사과'];
- 올바른 코드:
Set<String> fruits = {'사과', '바나나'}; // 중복을 자동으로 방지
- 잘못된 코드:
Map<String, String> phoneBook = {};
phoneBook['Alice'] = '123-456'; // 추가
String number = phoneBook['Bob']; // Bob이 없으므로 null 반환
- 올바른 코드:
String number = phoneBook['Bob'] ?? '번호 없음'; // 기본값 추가