Framework/Flutter

Dart 기초 문법 - 컬렉션

IFLA 2024. 2. 2. 09:00

컬렉션

컬렉션은 여러 값을 하나의 변수에 저장할 수 있는 타입이다. 여러 값을 순서대로 저장하거나(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);
}

 

결과