var skillsOfA: Set<String> = ["swift", "oc", "oc"] //集合中的每一個值都是唯一的
var skillsOfB: Set = ["HTML", "CSS", "Ruby"]
var emptySet1: Set<Double> = []
var emptySet2 = Set<Int>()
var vowels = Set(["A", "E", "I", "O", "U"])
集合的成員變量
let set: Set = [3, 2, 2, 1]
set.count
emptySet1.isEmpty
skillsOfA.first // 取出一個元素
skillsOfA.contains("swift")
遍歷
//遍歷
for skill in skillsOfA {
print(skill)
}
//字典比較
let a: Set = [1, 2, 3, 4]
let b: Set = [1, 3, 2, 1, 1, 4, 2, 3, 2]
a == b // true
集合的增刪改查
var skillsOfA: Set = ["swift", "oc"]
//增
skillsOfA.insert("python")
skillsOfA.insert("swift") // 無效
//刪
skillsOfA.remove("oc") //返回被刪除元素
if let skill = skillsOfA.remove("oc") { //解包
print("oc is removed")
}
集合中的數學方法
var skillsOfA: Set = ["swift", "oc"]
var skillsOfB: Set = ["HTML", "CSS", "Ruby"]
var skillsOfC: Set = ["swift", "HTML", "CSS"]
//并集
skillsOfA.union(skillsOfB) //不改變原集合
skillsOfA.formUnion //改變原集合
//交集
skillsOfA.intersection(skillsOfC) //不改變原集合
skillsOfA.formIntersection(skillsOfC) //改變原集合
//減集
skillsOfA.subtract(skillsOfC) //在A中減去跟C集合相同的元素
skillsOfC.subtract(skillsOfA) //在C中減去跟A集合相同的元素
//子集、真子集
var skillsOfD: Set = ["swift", "oc"]
skillsOfD.isSubset(of: skillsOfA) //判斷D是不是A的子集 true
skillsOfD.isStrictSubset(of: skillsOfA) //判斷D是不是A的真子集 false
//超集、真超集
skillsOfA.isSuperset(of: skillsOfD) //判斷D是不是A的超集 true
skillsOfA.isStrictSuperset(of: skillsOfD) //判斷D是不是A的真超集 false
//判斷兩個集合是否是相離的
skillsOfA.isDisjoint(of: skillsOfB) //true