iOS 스터디 Part2 Set
기본적으로 각 요소가 한 번씩만 나타나며 정렬되지 않는 컬렉션 유형입니다.
특징.
Hash Table로 구현되어 있기 때문에(순서가 없는 Hashable한 값들의 유일한 집합) 값을 검색하는 것은 기본적으로 상수 시간 O(1)입니다.
iterator이기 때문에 loop, filter, map 연산 가능
단, 순서보장이 안되므로
1. 정렬이 필요할 경우:
sorted()
함수 사용let sortedSet = originSet.sorted()
2. 원본 순서가 필요할 경우: 클로저 사용하여 Sequence extension 선언
extension Sequence where Element: Hashable { func unique() -> [Element] { let seen: Set<Element> = [] return !lter { element in if seen.contains(element) { return false } else{ seen.insert(element) return true } } } }
Protocols.
ExpressibleByArrayLiteral: 배열 초기화
let singleDigitNumbers: Set = [1,2,3]
SetAlgebra: 집합 연산
// 차집합 let iPods: Set = ["iPod touch", "iPod nano", "iPod mini", "iPod shuf!e", "iPod classic"] let discontinuedIPods: Set = ["iPod mini", "iPod classic", "iPod nano", "iPod shuf!e"] let currentIPods = iPods.subtracting(discontinuedIPods) // ["iPod touch"] // 교집합 let touchscreen: Set = ["iPhone", "iPad", "iPod touch", "iPod nano"] let iPodsWithTouch = iPods.intersection(touchscreen) // ["iPod nano", "iPod touch"] // 합집합 var discontinued: Set = ["iBook", "PowerBook", "Power Mac"] let unionIPods = discontinued.formUnion(discontinuedIPods) // ["iPod classic", "Power Mac", "iPod nano", "iPod shuf!e", "iBook", "iPod mini", "PowerBook"]
Next Steps.
Set
, Dictionary
는 기본적으로 Hash Table
를 사용하기 때문에 해당 개념을 정리하고 다른 Collection 유형과 비교해볼 예정이다.
Last updated