집합은 정렬되지 않은 고유한 항목들로 이루어진 컬렉션입니다. Set 타입을 통해 제공되며 {...} 표현식으로 리터럴을 지원합니다. 아래 코드에서 halogens 변수는 Set<String> 타입으로 추론됩니다. Set에 다른 타입을 추가할 경우 컴파일 타임 또는 런타임 오류가 발생합니다. 타입 인수를 {}앞에 사용하거나 Set 변수에 할당하면 빈 Set을 생성합니다.
voidmain() {var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};// Error: The argument type 'int' can't be assigned to the parameter type 'String'. halogens.add(1);var names =<String>{};// 위와 동일한 표현식입니다.// Set<String> names = {};// 타입 어노테이션 없이 {}만 사용하면 Map 객체가 생성됩니다.var empty = {};print(empty.runtimeType);}
Map 리터럴 표현식은 Set 리터럴과 문법이 유사합니다. Map 리터럴이 더 먼저 지원되기 시작해서 {}의 기본 타은 Map입니다. {} 리터럴 사용 시 타입 어노테이션이 타입 인수를 선언하지 않으면 Map<dynamic, dynamic> 타입의 객체가 생성됩니다.
Set에 항목을 추가할 때는 add() 또는 addAll() 메서드 사용합니다. 또한 length 속성을 이용하여 항목의 수를 구합니다.