Set类型语法
Swift中的Set类型被写为Set<T>,这里的T表示Set中允许存储的类型。
创建和构造一个空的Set
- 你可以通过构造器语法创建一个特定类型的空集合:
var letters = Set<Character>()
- 一个空的数组字面量创建一个空的Set:
var letters = Set<Character>()
leters.insert("a")
letters = []
- 用数组字面量创建集合
var favoriteGenres: Set<String> = ["Rock","Classical",Hip hop""]
这里将favoriteGenres显示声明为Set<String>,如果不这么做,favoriteGenres会被推断为Array<String>类型.
访问和修改一个Set
为了找出一个Set中元素的数量,可以使用其只读属性count:
使用布尔属性isEmpty 作为一个缩写形势去检查count属性是否为0
你可以通过调用Set的insert(_:)方法来添加一个新元素
用Set的remove(_:)方法去删除一个元素,也可以通过removeAll()方法删除所有元素
使用contains(_:)方法去检查Set中是否包含一个特定的值
Set和Array不同的是,Set是无序的,可以通过调用sort()方法来进行排序。
基本集合操作
- 使用intersect(_:)方法根据两个集合中都包含的值创建的一个新的集合。
- 使用exclusiveOr(_:)方法很据只在一个集合中但不在两个集合中的值创建一个新的集合。
- 使用union(_:)方法根据两个集合的值创建一个新的集合。
- 使用subtract(_:)方法根据不在该集合中的值创建一个新的集合。
let oddDigits: Set = [1,3,5,7,9]
let ecenDigits: Set = [0,2,4,6,8]
let singleDigitPrimeNumbers : Set = [2,3,5,7]
oddDigits.union(ecenDigits).sort()
//[0,1,2,3,4,5,6,7,8,9]
oddDigits.intersect(ecenDigits).sort
//[]
oddDigits.subtract(singleDigitPrimeNumbers).sort()
//[1,9]
oddDigits.exclusiveOr(singleDigitPrimeNumbers).sort()
//[1,2,9]
集合成员关系和相等
下面的插图描述了三个集合a,b和c,以及通过悬浮区域表述集合间共享的元素。Set a是Set b的父集合,因为 a 包含了 b中所有元素,相反的,Set b 是 a 的子集合,因为属于b的元素也被a 包含。Set b 和Set c 彼此不关联,因为他们之间没有共同的元素。
- 使用“是否等”运算符(==)来判断两个集合是否包含全部相同的值。
- 使用isSubsetOf(_:)方法来判断一个集合中的值是否也被包含在另外一个集合中。
- 使用isSupersetOf(_:)方法来判断一个集合中包含的值是否含有另一个集合中所有的值。
- 使用 isStrictSubsetOf(:)或者isStrictSupersetOf(:)方法来判断一个集合是否是另外一个集合的子集合或者父集合并且和特定集合不相等。
- 使用isDisjointWith(_:)方法来判断两个集合是否不含有相同的值。
let houseAnimals : Set = ["?","?"]
let farmAnimals: Set = ["?","?","?","?","?"]
let cityAnimals: Set = ["?","?"]
houseAnimals. isSubsetOf(farmAnimals)
//true
farmAnimals. isSupersetOf(houseAnimals)
//true
farmAnimals. isDisjointWith(cityAnimals)
//true