컬렉션 타입이란, 데이터들의 집합를 뜻한다.
Swift에는 대표적으로 Array, Dictionary, Set이 있다.
// 빈 Array 생성
var integers: Array<Int> = Array<Int>()
// Array 생성 시, 축약하여 표현 가능
var doubles: Array<Double> = [Double]()
var strings: [String] = [String]()
var characters: [Character] = []
// 미리 원소를 넣어 Array 생성 가능
var someIntegers = [1, 2, 3]
// 뒤에 원소 추가
integers.append(1)
integers.append(100)
// 원소를 가지고 있는지 확인
integers.contains(100) // true
integers.contains(99) // false
// 원소 제거
integers.remove(at: 0) // 0번째 인덱스의 원소 제거
integers.removeLast() // 마지막 원소 제거
integers.removeAll() // 모든 원소 제거
// 원소 개수 세기
integers.count
// let을 사용하여 불변 Array 만들기 가능
let immutableArray = [1, 2, 3]
// Key가 String 타입이고 Value가 Any인 빈 Dictionary 생성
var anyDictionary: Dictionary<String, Any> = [String: Any]()
anyDictionary["someKey"] = "value"
anyDictionary["nextKey"] = 100
anyDictionary
// 결과: ["someKey": "value", "nextKey": 100]
// 값 변경
anyDictionary["someKey"] = "dictionary"
// 결과: ["someKey": "dictionary", "nextKey": 100]
// 값 제거
anyDictionary.removeValue(forKey: "nextKey")
anyDictionary["someKey"] = nil
// 빈 Dictionary 생성
let emptyDictionary: [String: String] = [:]
// 미리 원소를 넣은 Dictionary 생성
let initalizedDictionary: [String: String] = ["name": "yeon", "gender": "female"]
// 오류 발생 - name에 해당하는 값이 없을 수도 있기 때문
let someValue: String = intializedDictionary["name"]
// 축약형 표현 없음
var integerSet: Set<Int> = Set<Int>()
// 값 추가
integerSet.insert(1)
integerSet.insert(100)
integerSet.insert(10)
integerSet.insert(10)
integerSet.insert(10)
integerSet // 결과: {1, 10, 100}
// 값이 있는지 확인
integerSet.contains(1) // true
integerSet.contains(2) // false
// 값 제거
integerSet.remove(100)
integerSet.removeFirst()
// 원소 개수 세기
integerSet.count
// 응용
let setA: Set<Int> = [1, 2, 3, 4, 5]
let setB: Set<Int> = [3, 4, 5, 6, 7]
// 합집합
let union: Set<Int> = setA.union(setB)
// {2, 4, 5, 6, 7, 3, 1}
// 정렬되지 않은 형태
// 정렬
let sortedUnion: [Int] = union.sorted()
// [1, 2, 3, 4, 5, 6, 7]
// Set은 {}, Array는 []
// 교집합
let intersection: Set<Int> = setA.intersection(setB)
// {5, 3, 4}
// 차집합
let subtracting: Set<Int> = setA.subtracting(setB)
// {2, 1}