Set類型語法
Swift中的Set類型被寫為Set<T>,這里的T表示Set中允許存儲(chǔ)的類型梆奈。
創(chuàng)建和構(gòu)造一個(gè)空的Set
- 你可以通過構(gòu)造器語法創(chuàng)建一個(gè)特定類型的空集合:
var letters = Set<Character>()
- 一個(gè)空的數(shù)組字面量創(chuàng)建一個(gè)空的Set:
var letters = Set<Character>()
leters.insert("a")
letters = []
- 用數(shù)組字面量創(chuàng)建集合
var favoriteGenres: Set<String> = ["Rock","Classical",Hip hop""]
這里將favoriteGenres顯示聲明為Set<String>,如果不這么做野崇,favoriteGenres會(huì)被推斷為Array<String>類型.
訪問和修改一個(gè)Set
為了找出一個(gè)Set中元素的數(shù)量,可以使用其只讀屬性count:
使用布爾屬性isEmpty 作為一個(gè)縮寫形勢去檢查count屬性是否為0
你可以通過調(diào)用Set的insert(_:)方法來添加一個(gè)新元素
用Set的remove(_:)方法去刪除一個(gè)元素,也可以通過removeAll()方法刪除所有元素
使用contains(_:)方法去檢查Set中是否包含一個(gè)特定的值
Set和Array不同的是亩钟,Set是無序的乓梨,可以通過調(diào)用sort()方法來進(jìn)行排序。
基本集合操作
- 使用intersect(_:)方法根據(jù)兩個(gè)集合中都包含的值創(chuàng)建的一個(gè)新的集合清酥。
- 使用exclusiveOr(_:)方法很據(jù)只在一個(gè)集合中但不在兩個(gè)集合中的值創(chuàng)建一個(gè)新的集合扶镀。
- 使用union(_:)方法根據(jù)兩個(gè)集合的值創(chuàng)建一個(gè)新的集合。
- 使用subtract(_:)方法根據(jù)不在該集合中的值創(chuàng)建一個(gè)新的集合焰轻。
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]
集合成員關(guān)系和相等
下面的插圖描述了三個(gè)集合a,b和c臭觉,以及通過懸浮區(qū)域表述集合間共享的元素。Set a是Set b的父集合辱志,因?yàn)?a 包含了 b中所有元素胧谈,相反的,Set b 是 a 的子集合荸频,因?yàn)閷儆赽的元素也被a 包含菱肖。Set b 和Set c 彼此不關(guān)聯(lián),因?yàn)樗麄冎g沒有共同的元素旭从。
- 使用“是否等”運(yùn)算符(==)來判斷兩個(gè)集合是否包含全部相同的值稳强。
- 使用isSubsetOf(_:)方法來判斷一個(gè)集合中的值是否也被包含在另外一個(gè)集合中场仲。
- 使用isSupersetOf(_:)方法來判斷一個(gè)集合中包含的值是否含有另一個(gè)集合中所有的值。
- 使用 isStrictSubsetOf(:)或者isStrictSupersetOf(:)方法來判斷一個(gè)集合是否是另外一個(gè)集合的子集合或者父集合并且和特定集合不相等退疫。
- 使用isDisjointWith(_:)方法來判斷兩個(gè)集合是否不含有相同的值渠缕。
let houseAnimals : Set = ["?","?"]
let farmAnimals: Set = ["?","?","?","?","?"]
let cityAnimals: Set = ["?","?"]
houseAnimals. isSubsetOf(farmAnimals)
//true
farmAnimals. isSupersetOf(houseAnimals)
//true
farmAnimals. isDisjointWith(cityAnimals)
//true