일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Flutter
- Algorithm
- github
- 유니티
- gitlab
- 포인터
- HTML
- Unity
- C++
- jupyter lab
- c# 추상 클래스
- 도커
- git
- docker
- c언어
- 구조체
- vim
- Data Structure
- C언어 포인터
- jupyter
- 플러터
- dart 언어
- 깃
- Python
- c#
- c# 윈폼
- C# delegate
- Houdini
- 다트 언어
- c# winform
Archives
- Today
- Total
nomad-programmer
[Programming/Dart] Collection 본문
다트는 List, Map, Set 등의 컬렉션을 제공한다.
다트에서 컬렉션은 기본 제공하는 자료 구조를 말한다.
- List : 같은 타입으 ㅣ자료를 여러 개 담을 수 있고 특정 인덱스로 접근할 수 있다.
- Map : 키(key)와 값(value)의 쌍으로 저장할 수 있고 키를 통해 값을 얻을 수 있다.
- Set : 중복이 허용되지 않고, 찾는 값이 있는지 없는지 판단하고자 할 때 사용한다.
List
List는 순서가 있는 자료를 담는 컬렉션이다. 다른 언어에서는 대부분 배열과 리스트가 별도로 제공되지만, 다트는 배열을 제공하지 않는다.
List<int> numbers = [1, 2, 3, 4, 5];
var numbers = [1, 2, 3, 4, 5];
<int> 는 리스트에 담길 데이터 타입을 지정한 것이다. 하지만 컬렉션도 타입 추론을 사용할 수 있어 일반적으로 var로 선언한다.
dynamic
모든 타입을 대변하는 dynamic이라는 특수한 타입이 있다. 여러 타입을 한 리스트에 넣거나 일반 변수를 선언할 때도 사용할 수 있다. 이때도 명시적으로 List<dynamic>을 쓰는 대신 var를 사용할 수 있다.
var list = [1, 2, 3, 'hello', 5.5];
List<dynamic> = [1, 2, 3, 'hello', 5.5];
스프레드 연산자 (...)
... 연산자는 컬렉션을 펼쳐주는 연산자로 스프레드(spread) 연산자라고 한다. 다른 컬렉션 안에 컬렉션을 삽입할 때 사용한다.
void main(){
List<String> items = ['abc', 'def', 'ghi'];
List<String> items2 = ['haha', ...items, 'hoho'];
print(items2);
}
/* 결과
[haha, abc, def, ghi, hoho]
*/
다음과 같이 리스트를 Set에 담게 되면 자동으로 중복 제거의 효과도 얻을 수 있다.
void main(){
// final List<int> items = [1, 2, 2, 3, 3, 4, 5]; 이와 같음
final items = [1, 2, 2, 3, 3, 4, 5];
final myNumbers = {...items, 6, 7};
print(myNumbers);
}
/* 결과
{1, 2, 3, 4, 5, 6, 7}
*/
Map
순서가 없고 탐색이 빠른 자료구조 컬렉션이다. 키(key)와 값(value)의 쌍으로 이루어져 있어 키를 이용하여 값을 빠르게 얻을 수 있다. 만약 요청한 키에 해당하는 값이 없다면 값 없음을 의미하는 null을 반환한다.
void main(){
// Map<String, String> cityMap = {}; 와 같음
var cityMap = {
'한국': '경기도',
'일본': '도쿄',
'중국': '북경'
};
cityMap['한국'] = '서울';
print(cityMap.length);
print(cityMap['한국']);
print(cityMap['중국']);
print(cityMap['미국']);
cityMap['미국'] = '워싱턴';
print(cityMap['미국']);
}
/* 결과
3
서울
북경
null
워싱턴
*/
Set
집합을 표현하는 자료구조 컬렉션이다. add(), remove() 메소드로 집합을 추가하거나 삭제할 수 있다. contains() 메소드는 찾고자 하는 자료가 집합에 있는지 없는지 불리언 타입으로 반환하기 때문에 집합에 요소가 있는지 검사할 때 사용한다. 리스트와 다르게 중복을 허용하지 않는다.
void main() {
// Set<String> citySet = { }; 와 같음
var citySet = {'서울', '수원', '오산', '부산'};
citySet.add('안양');
citySet.remove('수원');
print(citySet.contains('안양'));
print(citySet.contains('도쿄'));
}
/* 결과
true
false
*/
빈 Set이나 빈 Map을 작성할 때는 문법을 조심해야 한다. 값 없이 그냥 { }만 작성하면 Set이 아닌 Map으로 인식한다.
Set<String> mySet = <String>{};
Map<dynamic, dynamic> mySet2 = {};
'Programming > Dart' 카테고리의 다른 글
[Programming/Dart] 비동기 프로그래밍 : futures, async, await (2) | 2020.10.10 |
---|---|
[Programming/Dart] 유용한 기법 (계단식 표기법, 컬렉션 if, 컬렉션 for, null) (0) | 2020.10.06 |
[Programming/Dart] 함수형 프로그래밍 (Functional Programming) (2) | 2020.10.06 |
[Programming/Dart] 객체 지향 프로그래밍 (Object-Oriented Programming) (0) | 2020.10.06 |
[Programming/Dart] 다트 언어 소개 및 연습 환경 (0) | 2020.10.06 |
Comments