Collection은 여러 값을 하나의 변수에 저장할 수 있는 타입니다. Collection은 서로의 타입으로 자유롭게 형변환이 가능하다는 큰 장점이 있습니다.
1. List
- 리스트(List)는 여러 값을 순서대로 한 변수에 저장할 때 사용됩니다.
- 리스트의 구성단위를 원소라고 합니다.
- 리스트명[index] 형식으로 특정 원소에 접근할 수 있습니다.
- 첫 번째 원소는 index 0이며, 마지막 원소는 리스트의 길이 -1입니다.
void main() {
List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
print(list); // 리스트 전체 출력
print(list[0]);
print(list[3]); // 마지막 원소 지정
print(list.length); // 리스트의 길이
print(list[list.length - 1]); // 마지막 원소 지정
}
다음은 List에서 가장 많이 사용하는 add(), where(), map(), reduce(), fold() 함수를 알아보겠습니다.
add() 함수
add() 함수는 List에 값을 추가할 때 사용합니다.
void main() {
List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
list.add("유관순");
print(list); // 리스트 전체 출력
}
where() 함수
where() 함수는 List에 있는 값들 중, 트정 조건에 맞는 값만 필터링하는 데 사용합니다. 매개변수에 함수를 입력해야 하며, 입력된 함수는 기존 값을 하나씩 매개변수로 입력받습니다. 필터링이 끝나면 Iterable이 반환됩니다.
void main() {
List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
final newList = list.where(
(name) => name == '강감찬' || name == '이순신'
);
print(newList); // Iterable
print(newList.toList()); // Iterable을 List로 변환하여 출력
}
map() 함수
map() 함수는 List에 있는 값들을 순서대로 순회하면서 값을 변경할 수 있습니다. List와 마찬가지로 매개변수에 함수를 입력해야 하며, 입력된 함수는 기존 값을 하나씩 매개변수로 받습니다. 순회가 끝나면 Iterable이 반환됩니다.
void main() {
List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
final newList = list.map(
(name) => '한국 $name' // 리스트의 모든 값 앞에 '한국' 추가
);
print(newList); // Iterable
print(newList.toList()); // Iterable을 List로 변환하여 출력
}
reduce() 함수
reduce() 함수는 List에 있는 값들을 순회하면서 매개변수에 입력된 함수를 실행합니다.
reduce() 함수는 순회할 때마다 값을 쌓아가는 특징이 있습니다.
reduce() 함수는 순회가 끝나면 List 멤버의 타입과 같은 타입을 반환합니다.
void main() {
List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
final newList = list.reduce(
(value, element) => value + ', ' + element
);
print(newList);
}
fold() 함수
fold() 함수는 reduce() 함수와 실행되는 논리는 같습니다.
단, recude() 함수는 함수가 실행되는 List 요소들의 타입이 같아야 하지만, fold() 함수는 어떠한 타입이든 반환할 수 있습니다.
void main() {
List<String> list = ['홍길동', '임꺽정', '강감찬', '이순신'];
// list에 존재하는 총 글자수를 구한다.
final newList = list.fold<int>(
0, (value, element) => value + element.length
);
print(newList);
}
2. Map
Map 타입은 키(key)와 값(value)의 짝을 저장합니다. 리스트는 순서대로 값을 저장하는데 중점을 두지만, Map은 키를 이용여 원하는 값을 빠르게 찾는 데 중점을 둡니다.
void main() {
Map<String, int> map = {
'홍길동': 20,
'임꺽정': 30,
'강감찬': 40,
'이순신': 50
};
print(map['홍길동']);
print(map['이순신']);
}
all keys, all values
모든 Map 타입은 모든 키와 모든 값을 반환받을 수 있습니다.
void main() {
Map<String, int> map = {
'홍길동': 20,
'임꺽정': 30,
'강감찬': 40,
'이순신': 50
};
print(map.keys);
print(map.values);
}
3. Set
Set은 중복 없는 값들의 집합입니다.
따라서 각 값의 유일함을 보장받을 수 있습니다.
void main() {
// 이순신 중복
Set<String> set = {'홍길동','임꺽정','강감찬','이순신','이순신'};
// 중복된 값 있는지 확인
print(set);
// 값이 있는지 확인
print(set.contains('임꺽정'));
}
Set to List, List to Set
void main() {
// 이순신 중복
Set<String> set = {'홍길동','임꺽정','강감찬','이순신','이순신'};
List<String> list = set.toList();
// Set to List
print(list);
// List to Set
print(Set.from(list));
}
4. enum
열거형 상수인 enum(enumeration)은 관련이 있는 상수들의 집합입니다.
한 변수의 값을 몇 가지 옵션으로 제한하기 위해 사용합니다.
enum Status {
requested, approved, rejected
}
void main() {
Status status = Status.requested;
print(status);
}
'front end > flutter, dart' 카테고리의 다른 글
[Dart 입문] 함수 사용방법 (0) | 2023.05.18 |
---|---|
[Dart 입문] null 관련 연산자 (0) | 2023.05.16 |
Dart 입문. 기초 문법 (0) | 2023.05.11 |
Dart 입문. Dart 소개 (0) | 2023.05.10 |
Flutter 설치 및 개발환경 구축 (Windows, Mac) (0) | 2023.05.08 |