Swift中提供了3種集合類型,Array數據類型,Set集合類型,Dictionary字典類型。Array用於存放一組有序的數據,數據角標從0開始一次遞增;Set用於存放一組無序的數據,數據不能夠重複;Dictionary也用於存放一組無序的數據,只是其是按照鍵值對的方式存儲,鍵值必須惟一。這裏借用官方文檔中的一張圖來表示3種集合類型的特色:數組
Array一般也被稱爲數組,Swift是一種類型安全語言,其中的Array類型也必須肯定其元素的類型,聲明數組類型有兩種方法,示例以下:安全
//將數組聲明爲Int類型值集合的數組 var array1:[Int] var array2:Array<Int> //建立空數組 array1 = [] array2 = Array()
數組對象若是經過var變量也接收,則其爲可變的數組,能夠經過append方法來追加元素,示例以下:app
//向數組中追加元素 array1.append(3)
在建立數組時,也能夠對數組進行初始化,示例以下:spa
//建立數組[0,0,0] var array3 = [Double](count: 3, repeatedValue: 0) //建立數組[2.5,2.5,2.5] var array4 = Array(count: 3, repeatedValue: 2.5) //數組可使用+號直接進行追加 [0,0,0,2.5,2.5,2.5] var array5 = array3+array4
Swift中提供了許多訪問和修改數組的方法,示例代碼以下:code
//獲取數組中元素個數 array5.count //判斷數組是否爲空 array5.isEmpty //經過下標訪問數組中的元素 array5[1] //經過下標修改數組元素 array5[1]=2 //修改數據中的一組數據 array5[0...3] = [1,1,1,1] //向數組中某個位置插入一個數據 array5.insert(3, atIndex: 1) //移除數組某個角標處的元素 array5.removeAtIndex(1) //移除數組的最後一個元素 array5.removeLast() //移除數組第一個元素 array5.removeFirst() //遍歷整個數組 for item in array5 { print(item) } //遍歷數組枚舉 for (index,item) in array5.enumerate() { print(index,item) }
Set類型集合不關注元素的順序,可是其能夠保證其中元素的惟一性。和Array類型同樣,Set類型來聲明時也須要肯定其內元素的類型,示例以下:對象
var set1:Set<Character> = ["a","b","c","d"]
下面示例代碼演示對集合進行操做:排序
var set1:Set<Character> = ["a","b","c","d"] var set2:Set<Character> = ["e","f","g"] //向集合中插入元素 set1.insert("z") //獲取集合中元素個數 set1.count //判斷集合是否爲空 set1.isEmpty //將集合中的某個元素移除 set1.remove("a") //移除集合中的全部元素 set1.removeAll() //判斷集合中是否包含某個元素 set2.contains("e") //遍歷集合 for item in set2 { print(item) } //進行從小到大的排序遍歷 for item in set2.sort() { print(item) }
Set也支持進行一些集合的數學運算,例如交集,並集,補集等,下面一張圖演示了Set進行集合運算的一些特性:rem
intersect()方法返回兩個集合的交集。文檔
exclusiveOr()方法用於返回兩個集合交集的補集。數學
union()方法用於返回兩個集合的並集。
subtract()方法用於返回第二個集合的補集。
示例代碼以下:
var set3:Set<Int> = [1,2,3,4] var set4:Set<Int> = [1,2,5,6] //返回交集 {1,2} var setInter = set3.intersect(set4) //返回交集的補集{3,4,5,6} var setEx = set3.exclusiveOr(set4) //返回並集{1,2,3,4,5,6} var setUni = set3.union(set4) //返回第二個集合的補集{3,4} var setSub = set3.subtract(set4)
使用比較運算符==能夠比較兩個Set集合是否相等,當兩個Set集合中全部元素都相等時,這兩個集合才相等。下面代碼顯示了與子集相關的運算:
var set5:Set = [1,2] var set6:Set = [2,3] var set7:Set = [1,2,3] var set8:Set = [1,2,3] //判斷是不是某個集合的子集 set5是set7的子集 返回ture set5.isSubsetOf(set7) //判斷是不是某個集合的超集 set7是set5的超集 返回ture set7.isSupersetOf(set5) //判斷是不是某個集合的真子集 set5是set7的真子集 返回ture set5.isStrictSubsetOf(set7) //判斷是不是某個集合的真超集 set7不是set8的真超集 返回false set7.isStrictSupersetOf(set8)
Swift中的Dictionary在聲明時必須明確鍵的類型和值的類型,示例以下:
var dic:Dictionary<Int,String> var dic2:[Int:String] = [1:"one",2:"Two"]
訪問與操做Dictionary的方法,代碼示例以下:
var dic2:[Int:String] = [1:"One",2:"Two",3:"Three",4:"Four"] //獲取字典鍵值對個數 dic2.count //判斷字典是否爲空 dic2.isEmpty //經過鍵獲取值 dic2[1] //經過鍵修改值 dic2[1] = "First" //添加鍵值 dic2[0] = "Zero" //updateValue 方法將更新一個鍵值 若是此鍵存在 則更新鍵值 而且將舊的鍵值返回 若是此鍵不存在 則添加鍵值 返回nil 其返回的爲一個Optional類型值 可使用if let進行處理 dic2.updateValue("9", forKey: 1) //使用if let 處理updateValue的返回值 if let oldValue = dic2.updateValue("One", forKey: 1) { print("Old Value is \(oldValue)") } //經過鍵值獲取的數據也將是有個Optional類型的值 也可使用if let if let value = dic2[1] { print("The Value is \(value)") } //移除某個鍵值對 dic2[9]=nil dic2.removeValueForKey(9) //對字典進行遍歷 for (key,value) in dic2 { print(key,value) } //遍歷全部鍵 for key in dic2.keys { print(key) } //遍歷全部值 for value in dic2.values { print(value) } //進行從小到大的排序遍歷 for key in dic2.keys.sort() { print(key) }
專一技術,熱愛生活,交流技術,也作朋友。
——琿少 QQ羣:203317592