Lists
- 가장 일반적인 Collection
- 배열 또는 순서가 지정된 개체 그룹
- 마지막 아이템에 , 붙여도
- 0 기반 인덱싱 사용, 0은 첫번째 인덱스 list.length - 1은 마지막 아이템
var list = [1, 2, 3,];
var list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);
list[1] = 1;
assert(list[1] == 1);
Sets
- 고유한 아이템들의 무질서한 컬렉션
- 빈 set을 생성할 때는 타입뒤에 {}을 사용
- add() 또는 addAll()을 사용해 데이터를 추가함
- .length를 사용해 set의 항목 수를 가져옴
- 상수인 집합을 만들려면 set 리터럴 앞에 const를 추가함
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};
var names = <String>{};
// Set<String> names = {}; // This works, too.
// var names = {}; // Creates a map, not a set.
var elements = <String>{};
elements.add('fluorine');
elements.addAll(halogens);
assert(elements.length == 5);
final constantSet = const {
'fluorine',
'chlorine',
'bromine',
'iodine',
'astatine',
};
// constantSet.add('helium'); // This line will cause an error.
Maps
- 키 값과 밸류 값을 연결하는 객체
- 키와 밸류는 모든 타입이 가능함
- 각 키는 중복될 수 없지만 밸류 값은 중복 가능함
var gifts = {
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';
var nobleGases = {
2: 'helium',
10: 'neon',
18: 'argon',
};
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';
// [] = 을 사용해 새로운 값을 추가함
var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds'; // Add a key-value pair
// [] 을 사용해 Map에서 값을 검색
var gifts = {'first': 'partridge'};
assert(gifts['first'] == 'partridge');
// Map에 없는 값을 검색하면 null을 반환함
var gifts = {'first': 'partridge'};
assert(gifts['fifth'] == null);
// .length를 사용해 Map 사이즈를 가져옴
var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds';
assert(gifts.length == 2);
// const를 붙여 상수 값으로 사용
final constantMap = const {
2: 'helium',
10: 'neon',
18: 'argon',
};
// constantMap[2] = 'Helium'; // This line will cause an error.
Operators
- Spread 연산자를 이용해 리스트에 다른 리스트 값을 한번에 추가함
var list = [1, 2, 3];
var list2 = [0, ...list];
assert(list2.length == 4);
- Spread 연산자를 통해 넣는 값이 null일 수 도 있는 경우에는 null-aware spread 연산자를 사용(...?)
var list2 = [0, ...?list];
assert(list2.length == 1);
- Control-flow 연산자
-> Dart는 리스트, 맵에 값을 세팅하기위한 if문, 컬렉션 문을 지원
var nav = ['Home', 'Furniture', 'Plants', if (promoActive) 'Outlet'];
var nav = ['Home', 'Furniture', 'Plants', if (login case 'Manager') 'Inventory'];
var listOfInts = [1, 2, 3];
var listOfStrings = ['#0', for (var i in listOfInts) '#$i'];
assert(listOfStrings[1] == '#1');