swift 공식 문서
[iOS - swift 공식 문서] 4. Collection Types (컬렉션 타입)
jake-kim
2021. 6. 19. 14:38
Swift 컬렉션은 3가지
- Array
- Set
- Dictionary
Array
- 갯수와 값을 지정한 초기화
let intArr = [Int](repeating: 0, count: 10)
- 추가: '+=' 연산자 사용
intArr += [2]
- 삽입: insert(_:at:)
- 기존에 at에 있던 값은 오른쪽으로 밀려나는 형태
var intArr = [Int](repeating: 0, count: 3) // [0, 0, 0]
intArr.insert(2, at: 1) // [0, 2, 0, 0]
- 삭제: remove(at:)
var intArr = [Int](repeating: 0, count: 3) // [0, 0, 0]
intArr.insert(2, at: 1) // [0, 2, 0, 0]
let removedValue = intArr.remove(at: 1) // [0, 0, 0]
- 첫번째, 마지막 삭제: removeFirst(), removeLast()
Set
- 집합은 hash로 구성
- 알고리즘에서 특정 값이 존재하는지 체크할 땐 Dictionary 컬렌션보다는 Set 사용
- 사용
- 일일이 추가하는 방법
let strArr = ["jake", "kim", "john", "Lee"]
var set = Set<String>()
for str in strArr {
set.insert(str)
}
print(set) // ["john", "jake", "kim", "Lee"]
- Set 초기화에 Array을 삽입
let strArr = ["jake", "kim", "john", "Lee"]
var set = Set(strArr)
print(set) // ["kim", "john", "jake", "Lee"]
- 제거: remove(_:)
let strArr = ["jake", "kim", "john", "Lee"]
var set = Set(strArr)
set.remove("kim")
print(set) // ["john", "jake", "Lee"]
- 특정 항목이 포함되어 있는지 확인: contains(_:)
let strArr = ["jake", "kim", "john", "Lee"]
var set = Set(strArr)
set.contains("john") // true
- Set은 순서가 없고 만약 정렬된 값을 사용하고 싶은 경우: sorted()
let strArr = ["홍길동", "김하나", "이상해씨", "파이리"]
var set = Set(strArr)
for value in set.sorted() {
print(value, terminator: " ") // 김하나 이상해씨 파이리 홍길동
}
집합 연산
- 4가지 집합 연산

- 예시
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNuimbers: Set = [2, 3, 5, 7]
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.union(evenDigits)
// [1, 9]
oddDigits.subtracting(singleDigitPrimeNuimbers)
// [1, 2, 9]
oddDigits.symmetricDifference(singleDigitPrimeNuimbers
// []
oddDigits.intersection(evenDigits)
집합 포함 확인 연산
- isSubset(of:), isSuperset(of:)
- isStrictSubset(of:), isStrictSuperset(of:)
- strict의미: 두 집합이 같으면 false
- isDisjoint(with:)
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let randomDigits: Set = [1, 3]
oddDigits.isSubset(of: randomDigits) // false
oddDigits.isSuperset(of: randomDigits) // true
oddDigits.isDisjoint(with: evenDigits) // true
let sameOddDigits: Set = oddDigits
oddDigits.isSuperset(of: sameOddDigits) // true
oddDigits.isStrictSuperset(of: sameOddDigits) // false
Dictionary
- 추가: index자리에 바로 추가
var dict: [String: Int] = [:]
dict["abc"] = 1 // ["abc": 1]
- 삭제
var dict: [String: Int] = [:]
dict["abc"] = 1
dict["abc"] = nil // [:]
- Dictionary -> Array
- keys 값을 배열로: [타입](dict.keys)
- values 값을 배열로: [타입](dict.values)
var dict: [String: Int] = [:]
dict["abc"] = 1
let stringArr = [String](dict.keys)
let intArr = [Int](dict.values)
- 반복문 key or value 선택 가능
- dict.keys
- dict.values
for key in dict.keys {
}
for value in dict.values {
}
for (key, value) in dict {
}
* 참고
https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html