Swift中內(nèi)置的集合類型學(xué)習(xí)筆記
一、引言
Swift中提供了3種集合類型,Array數(shù)據(jù)類型,Set集合類型,Dictionary字典類型。Array用于存放一組有序的數(shù)據(jù),數(shù)據(jù)角標(biāo)從0開始一次遞增;Set用于存放一組無序的數(shù)據(jù),數(shù)據(jù)不可以重復(fù);Dictionary也用于存放一組無序的數(shù)據(jù),只是其是按照鍵值對的方式存儲,鍵值必須唯一。這里借用官方文檔中的一張圖來表示3種集合類型的特點(diǎn):
二、Array類型
Array通常也被稱為數(shù)組,Swift是一種類型安全語言,其中的Array類型也必須確定其元素的類型,聲明數(shù)組類型有兩種方法,示例如下:
//將數(shù)組聲明為Int類型值集合的數(shù)組 var array1:[Int] var array2:Array<Int> //創(chuàng)建空數(shù)組 array1 = [] array2 = Array()
數(shù)組對象如果通過var變量也接收,則其為可變的數(shù)組,可以通過append方法來追加元素,示例如下:
//向數(shù)組中追加元素 array1.append(3)
在創(chuàng)建數(shù)組時(shí),也可以對數(shù)組進(jìn)行初始化,示例如下:
//創(chuàng)建數(shù)組[0,0,0] var array3 = [Double](count: 3, repeatedValue: 0) //創(chuàng)建數(shù)組[2.5,2.5,2.5] var array4 = Array(count: 3, repeatedValue: 2.5) //數(shù)組可以使用+號直接進(jìn)行追加 [0,0,0,2.5,2.5,2.5] var array5 = array3+array4
Swift中提供了許多訪問和修改數(shù)組的方法,示例代碼如下:
//獲取數(shù)組中元素個(gè)數(shù) array5.count //判斷數(shù)組是否為空 array5.isEmpty //通過下標(biāo)訪問數(shù)組中的元素 array5[1] //通過下標(biāo)修改數(shù)組元素 array5[1]=2 //修改數(shù)據(jù)中的一組數(shù)據(jù) array5[0...3] = [1,1,1,1] //向數(shù)組中某個(gè)位置插入一個(gè)數(shù)據(jù) array5.insert(3, atIndex: 1) //移除數(shù)組某個(gè)角標(biāo)處的元素 array5.removeAtIndex(1) //移除數(shù)組的最后一個(gè)元素 array5.removeLast() //移除數(shù)組第一個(gè)元素 array5.removeFirst() //遍歷整個(gè)數(shù)組 for item in array5 { print(item) } //遍歷數(shù)組枚舉 for (index,item) in array5.enumerate() { print(index,item) }
三、Set類型
Set類型集合不關(guān)注元素的順序,但是其可以保證其中元素的唯一性。和Array類型一樣,Set類型來聲明時(shí)也需要確定其內(nèi)元素的類型,示例如下:
var set1:Set<Character> = ["a","b","c","d"]
下面示例代碼演示對集合進(jìn)行操作:
var set1:Set<Character> = ["a","b","c","d"] var set2:Set<Character> = ["e","f","g"] //向集合中插入元素 set1.insert("z") //獲取集合中元素個(gè)數(shù) set1.count //判斷集合是否為空 set1.isEmpty //將集合中的某個(gè)元素移除 set1.remove("a") //移除集合中的所有元素 set1.removeAll() //判斷集合中是否包含某個(gè)元素 set2.contains("e") //遍歷集合 for item in set2 { print(item) } //進(jìn)行從小到大的排序遍歷 for item in set2.sort() { print(item) }
Set也支持進(jìn)行一些集合的數(shù)學(xué)運(yùn)算,例如交集,并集,補(bǔ)集等,下面一張圖演示了Set進(jìn)行集合運(yùn)算的一些特性:
- intersect()方法返回兩個(gè)集合的交集。
- exclusiveOr()方法用于返回兩個(gè)集合交集的補(bǔ)集。
- union()方法用于返回兩個(gè)集合的并集。
- subtract()方法用于返回第二個(gè)集合的補(bǔ)集。
示例代碼如下:
var set3:Set<Int> = [1,2,3,4] var set4:Set<Int> = [1,2,5,6] //返回交集 {1,2} var setInter = set3.intersect(set4) //返回交集的補(bǔ)集{3,4,5,6} var setEx = set3.exclusiveOr(set4) //返回并集{1,2,3,4,5,6} var setUni = set3.union(set4) //返回第二個(gè)集合的補(bǔ)集{3,4} var setSub = set3.subtract(set4)
使用比較運(yùn)算符==可以比較兩個(gè)Set集合是否相等,當(dāng)兩個(gè)Set集合中所有元素都相等時(shí),這兩個(gè)集合才相等。下面代碼顯示了與子集相關(guān)的運(yùn)算:
var set5:Set = [1,2] var set6:Set = [2,3] var set7:Set = [1,2,3] var set8:Set = [1,2,3] //判斷是否是某個(gè)集合的子集 set5是set7的子集 返回ture set5.isSubsetOf(set7) //判斷是否是某個(gè)集合的超集 set7是set5的超集 返回ture set7.isSupersetOf(set5) //判斷是否是某個(gè)集合的真子集 set5是set7的真子集 返回ture set5.isStrictSubsetOf(set7) //判斷是否是某個(gè)集合的真超集 set7不是set8的真超集 返回false set7.isStrictSupersetOf(set8)
四、Dictionary類型
Swift中的Dictionary在聲明時(shí)必須明確鍵的類型和值的類型,示例如下:
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"] //獲取字典鍵值對個(gè)數(shù) dic2.count //判斷字典是否為空 dic2.isEmpty //通過鍵獲取值 dic2[1] //通過鍵修改值 dic2[1] = "First" //添加鍵值 dic2[0] = "Zero" //updateValue 方法將更新一個(gè)鍵值 如果此鍵存在 則更新鍵值 并且將舊的鍵值返回 如果此鍵不存在 則添加鍵值 返回nil 其返回的為一個(gè)Optional類型值 可以使用if let進(jìn)行處理 dic2.updateValue("9", forKey: 1) //使用if let 處理updateValue的返回值 if let oldValue = dic2.updateValue("One", forKey: 1) { print("Old Value is \(oldValue)") } //通過鍵值獲取的數(shù)據(jù)也將是有個(gè)Optional類型的值 也可以使用if let if let value = dic2[1] { print("The Value is \(value)") } //移除某個(gè)鍵值對 dic2[9]=nil dic2.removeValueForKey(9) //對字典進(jìn)行遍歷 for (key,value) in dic2 { print(key,value) } //遍歷所有鍵 for key in dic2.keys { print(key) } //遍歷所有值 for value in dic2.values { print(value) } //進(jìn)行從小到大的排序遍歷 for key in dic2.keys.sort() { print(key) }
相關(guān)文章
Swift版使用ThPullRefresh實(shí)現(xiàn)下拉上拉刷新數(shù)據(jù)
這篇文章主要介紹了Swift版使用ThPullRefresh實(shí)現(xiàn)下拉上拉刷新數(shù)據(jù),需要的朋友可以參考下2016-01-01淺談Swift編程中switch與fallthrough語句的使用
這篇文章主要介紹了Swift編程中switch與fallthrough語句的使用,用于基本的流程控制,需要的朋友可以參考下2015-11-11switch循環(huán)所支持的數(shù)據(jù)類型案例分析
這篇文章主要介紹了switch循環(huán)所支持的數(shù)據(jù)類型,本文通過實(shí)際案例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Flutter iOS開發(fā)OC混編Swift動態(tài)庫和靜態(tài)庫問題填坑
這篇文章主要為大家介紹了Flutter iOS OC 混編 Swift動態(tài)庫和靜態(tài)庫問題填坑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Swift中實(shí)現(xiàn)點(diǎn)擊、雙擊、捏、旋轉(zhuǎn)、拖動、劃動、長按手勢的類和方法介紹
這篇文章主要介紹了Swift中實(shí)現(xiàn)點(diǎn)擊、雙擊、捏、旋轉(zhuǎn)、拖動、劃動、長按手勢的類和方法介紹,本文分別給出了各種手勢的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-01-01