一、引言
Swift中提供了3種集合類型,Array數據類型,Set集合類型,Dictionary字典類型。Array用于存放一組有序的數據,數據角標從0開始一次遞增;Set用于存放一組無序的數據,數據不可以重復;Dictionary也用于存放一組無序的數據,只是其是按照鍵值對的方式存儲,鍵值必須唯一。這里借用官方文檔中的一張圖來表示3種集合類型的特點:
二、Array類型
Array通常也被稱為數組,Swift是一種類型安全語言,其中的Array類型也必須確定其元素的類型,聲明數組類型有兩種方法,示例如下:
//將數組聲明為Int類型值集合的數組var array1:[Int]var array2:Array<Int>//創建空數組array1 = []array2 = Array()
數組對象如果通過var變量也接收,則其為可變的數組,可以通過append方法來追加元素,示例如下:
//向數組中追加元素array1.append(3)
在創建數組時,也可以對數組進行初始化,示例如下:
//創建數組[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中提供了許多訪問和修改數組的方法,示例代碼如下:
//獲取數組中元素個數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類型
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進行集合運算的一些特性:
示例代碼如下:
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的子集 返回tureset5.isSubsetOf(set7)//判斷是否是某個集合的超集 set7是set5的超集 返回tureset7.isSupersetOf(set5)//判斷是否是某個集合的真子集 set5是set7的真子集 返回tureset5.isStrictSubsetOf(set7)//判斷是否是某個集合的真超集 set7不是set8的真超集 返回falseset7.isStrictSupersetOf(set8)
四、Dictionary類型
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 letif let value = dic2[1] { print("The Value is /(value)")}//移除某個鍵值對dic2[9]=nildic2.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)}
新聞熱點
疑難解答