Swift의 Set 타입은 NSSet 클래스를 브릿지된 형태입니다.
Set 타입은 순서가 중요하지 않거나 하나의 항목만 가져야 할 때 사용할 수 있습니다.
Set 타입의 문법은 Set로 작성되며, 다음과 같이 초기화 할 수 있습니다.
var strs = Set<String>()
만약 이미 초기화가 되어 있다면, 다음과 같이 빈 Set 객체로 만들 수 있습니다.
strs = []
값이 들어간 상태로 초기화 한다면 다음과 같이 사용할 수 있습니다.
strs = Set(["A", "B", "C", "D"])
Set 객체에 insert, ‘remove’ 메소드를 통해 추가, 삭제할 수 있습니다.
strs.insert("E")
strs.remove("B") // "B"
특정 항목이 포함되어 있는지 contains 메소드로 확인할 수 있습니다.
strs.contains("C") // true
Set 객체에 count, isEmpty 속성를 통해 크기를 알 수 있습니다.
strs.isEmpty // false
strs.count // 4
For Loops를 통해 Set 객체의 항목을 하나씩 얻을 수 있습니다.
for str in strs {
println(str)
}
집합처럼 두 개의 Set을 결합하여 모두 포함하는지, 포함하지 않는지, 일부만 포함하는지 등을 수행할 수 있습니다.
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
sorted(oddDigits.union(evenDigits))
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sorted(oddDigits.intersect(evenDigits))
// []
sorted(oddDigits.subtract(singleDigitPrimeNumbers))
// [1, 9]
sorted(oddDigits.exclusiveOr(singleDigitPrimeNumbers))
// [1, 2, 9]
let houseAnimals: Set = ["🐶", "🐱"]
let farmAnimals: Set = ["🐮", "🐔", "🐑", "🐶", "🐱"]
let cityAnimals: Set = ["🐦", "🐭"]
houseAnimals.isSubsetOf(farmAnimals) // true
farmAnimals.isSupersetOf(houseAnimals) // true
farmAnimals.isDisjointWith(cityAnimals) // true