Dart 기초 문법 - 컬렉션
컬렉션
컬렉션은 여러 값을 하나의 변수에 저장할 수 있는 타입이다. 여러 값을 순서대로 저장하거나(List), 특정 키값을 기반으로 빠르게 값을 검색해야 하거나(Map), 중복된 데이터를 제거할 때 사용한다(Set). 컬렉션 타입은 서로의 타입으로 자유롭게 형변환이 가능하다는 매우 큰 장점이 있다.
List 타입
리스트(List) 타입은 여러 값을 순서대로 한 변수에 저장할 때 사용한다. 리스트의 구성단위를 원소라고 한다. 리스트명[인덱스] 형식으로 특정 원소에 접근할 수 있다. 인덱스는 원소의 순번이라고 생각하면 된다.
예제 코드
void main() {
List<String> list = ['사과', '바나나', '파인애플', '귤'];
print(list);
print(list[0]);
print(list[2]);
print(list.length); // 길이 반환
list[3] = '한라봉';
print(list);
}
결과
제공 함수
- add() : List에 값을 추가할 때 사용
- where() : List에 있는 값들을 순서대로 순회하면서 특정 조건에 맞는 값만 필터링한다.
- map() : List에 있는 값들을 순서대로 순회하면서 값을 변경할 수 있다.
- reduce() : 매개변수로 함수를 입력받고 해당 함수는 매개변수 2개를 입력 받는다. 첫 번째 순회 이후로는 첫 번째 매개변수에 기존 순회에서 반환한 값이 첫 번째 매개변수에 입력되고 리스트에서의 다음 값이 두 번째 매개변수에 입력된다.
예제코드
void main() {
List<String> list = ['사과', '바나나', '파인애플', '귤'];
final foldList = list.reduce((value, element) => value + ', ' + element);
print(foldList);
}
결과
- fold() : reduce() 함수와 실행되는 논리는 똑같다.
Map 타입
맵(Map) 타입은 키(Key) 와 값(Value)의 짝을 저장한다. 순서대로 값을 저장하는데 중점을 두는 리스트와 달리 키를 이용해서 원하는 값을 빠르게 찾는다. Map<키의 타입, 값의 타입) 맵이름 형식으로 생성한다.
예제 코드
void main() {
Map<String, String> map = {
'Harry Potter': '해리 포터',
'Hermione Granger': '헤르미온느 그레인저',
};
print(map);
print(map['Harry Potter']);
}
결과
Set 타입
맵이 키와 값의 조합이라면 세트(Set)는 중복 없는 값들의 집합이다. Set<타입> 세트이름 형식으로 생성한다. 중복을 방지하므로 유일한 값들만 존재한다.
예제 코드
void main() {
Set<String> fruits = {'사과', '바나나', '바나나', '키위', '귤'};
print(fruits);
}
결과