Dart에서는 다양한 컬렉션과 데이터 구조를 제공하여 데이터를 효율적으로 관리하고 처리할 수 있습니다. 이들은 기본 데이터 구조인 List, Set, Map을 포함하여, 다양한 기능을 지원하는 Iterable과 Iterator 등으로 구성됩니다.
1. List (목록)
Dart의 List는 순서가 있는 데이터 컬렉션입니다. 배열과 유사하지만 크기가 동적으로 조정될 수 있습니다.
// List 생성
List<int> numbers = [1, 2, 3, 4, 5];
// 요소 추가
numbers.add(6);
// 요소 접근
print(numbers[0]); // 1 출력
// 리스트 순회
for (var num in numbers) {
print(num);
}
2. Set (집합)
Set은 중복을 허용하지 않고 순서가 없는 컬렉션입니다.
// Set 생성
Set<String> names = {'Alice', 'Bob', 'Charlie'};
// 요소 추가
names.add('Alice'); // 이미 존재하는 요소는 추가되지 않음
// 요소 접근 (순서가 없으므로 인덱스로 접근 불가)
for (var name in names) {
print(name);
}
3. Map (맵)
Map은 키-값 쌍으로 이루어진 데이터 구조입니다.
// Map 생성
Map<String, int> scores = {
'Alice': 95,
'Bob': 80,
'Charlie': 75,
};
// 요소 추가
scores['David'] = 88;
// 요소 접근
print(scores['Alice']); // 95 출력
// Map 순회
scores.forEach((key, value) {
print('$key\'s score is $value');
});
4. Iterable과 Iterator
Dart에서는 Iterable이라는 추상 클래스를 통해 컬렉션을 순회할 수 있습니다. Iterable은 데이터의 요소들을 차례로 접근할 수 있는 방법을 제공하며, Iterator를 사용하여 이를 실제로 수행합니다.
List<int> numbers = [1, 2, 3, 4, 5];
// Iterable을 이용한 순회
for (var number in numbers) {
print(number);
}
// Iterator를 이용한 순회
Iterator<int> iterator = numbers.iterator;
while (iterator.moveNext()) {
print(iterator.current);
}
5. 다양한 기능과 메서드
Dart의 컬렉션은 다양한 유용한 메서드와 기능을 제공하여 데이터 처리를 간편하게 할 수 있습니다. 예를 들어, 리스트와 세트는 add
, remove
, contains
와 같은 메서드를 통해 데이터를 추가, 삭제하거나 포함 여부를 확인할 수 있습니다. 맵은 keys
, values
와 같은 메서드를 통해 키와 값을 관리하며, forEach
메서드를 사용하여 각 요소에 접근할 수 있습니다.
List<int> numbers = [1, 2, 3, 4, 5];
numbers.add(6); // 리스트에 요소 추가
numbers.remove(2); // 리스트에서 요소 제거
Set<String> names = {'Alice', 'Bob', 'Charlie'};
names.contains('Alice'); // 집합에 요소 포함 여부 확인
Map<String, int> scores = {'Alice': 95, 'Bob': 80, 'Charlie': 75};
scores['David'] = 88; // 맵에 새로운 요소 추가
scores.forEach((key, value) {
print('$key\'s score is $value');
});
이러한 Dart의 컬렉션과 데이터 구조를 통해 데이터를 효율적으로 조작하고 관리할 수 있으며, 다양한 데이터 처리 작업을 수행할 수 있습니다. 각 데이터 구조의 특성을 잘 이해하고, 적절히 활용하여 프로그래밍을 진행하는 것이 중요합니다.