1>集合
Swift 語言提供Arrays、Sets和Dictionaries三種基本的集合類型用來存儲(chǔ)集合數(shù)據(jù)估盘。數(shù)組(Arrays)是有序數(shù)據(jù)的集。集合(Sets)是無序無重復(fù)數(shù)據(jù)的集。字典(Dictionaries)是無序的鍵值對(duì)的集它改。
2>創(chuàng)建一個(gè)帶有默認(rèn)值的數(shù)組
eg:?
3>通過兩個(gè)數(shù)組相加創(chuàng)建一個(gè)數(shù)組
eg: let arr1 = [Int](count:3, repeatedValue:2)
? ? ? let arr2 = [Int](count:2, repeatedValue:1)
? ? ? let arr3 = arr1+ arr2
? ? ? print(arr3)
那么打印的值為[2,2,2,1,1]
4>用字面量構(gòu)造數(shù)組
我們可以使用字面量來進(jìn)行數(shù)組構(gòu)造,這是一種用一個(gè)或者多個(gè)數(shù)值構(gòu)造數(shù)組的簡單方法商乎。字面量是一系列由逗號(hào)分割并由方括號(hào)包含的數(shù)值:
[value 1, value 2, value 3]央拖。
var arr :[String] = ["heng","ha"]
由于swift的推斷機(jī)制,我們也可以這樣構(gòu)造
eg: var arr ?= ["heng","ha"] ? swift可以自動(dòng)推斷[String]是這個(gè)數(shù)組的正確類型
5>訪問和修改數(shù)組
我們可以通過數(shù)組的方法和屬性來訪問和修改數(shù)組,或者使用下標(biāo)語法鹉戚∠式洌可以使用數(shù)組的只讀屬性count來獲取數(shù)組中的數(shù)據(jù)項(xiàng)數(shù)量.
使用布爾值屬性isEmpty作為檢查count屬性的值是否為0
也可以使用append(_:)方法在數(shù)組后面添加新的數(shù)據(jù)項(xiàng).
除此之外,使用加法賦值運(yùn)算符(+=)也可以直接在數(shù)組后面添加一個(gè)或多個(gè)擁有相同類型的數(shù)據(jù)項(xiàng):
可以直接使用下標(biāo)語法來獲取數(shù)組中的數(shù)據(jù)項(xiàng)抹凳,把我們需要的數(shù)據(jù)項(xiàng)的索引值直接放在數(shù)組名稱的方括號(hào)中:
eg: let element = arr[0]
我們也可以用下標(biāo)來改變某個(gè)已有索引值對(duì)應(yīng)的數(shù)據(jù)值:
eg: arr[0] = "nihao"
調(diào)用數(shù)組的insert(_:atIndex:)方法來在某個(gè)具體索引值之前添加數(shù)據(jù)項(xiàng):
eg: ??
打印的值為[4,2,2,2]
類似的我們可以使用removeAtIndex(_:)方法來移除數(shù)組中的某一項(xiàng)遏餐。這個(gè)方法把數(shù)組在特定索引值中存儲(chǔ)的數(shù)據(jù)項(xiàng)移除并且返回這個(gè)被移除的數(shù)據(jù)項(xiàng).
使用contains(_:)方法去檢查數(shù)組中是否包含一個(gè)特定的值
6>集合
集合(Set)用來存儲(chǔ)相同類型并且沒有確定順序的值。當(dāng)集合元素順序不重要時(shí)或者希望確保每個(gè)元素只出現(xiàn)一次時(shí)可以使用集合而不是數(shù)組赢底。
Swift 的Set類型沒有確定的順序失都,為了按照特定順序來遍歷一個(gè)Set中的值可以使用sort()方法,它將根據(jù)提供的序列返回一個(gè)有序集合.
7>基本集合操作
使用intersect(_:)方法根據(jù)兩個(gè)集合中都包含的值創(chuàng)建的一個(gè)新的集合幸冻。
使用exclusiveOr(_:)方法根據(jù)在一個(gè)集合中但不在兩個(gè)集合中的值創(chuàng)建一個(gè)新的集合粹庞。
使用union(_:)方法根據(jù)兩個(gè)集合的值創(chuàng)建一個(gè)新的集合。
使用subtract(_:)方法根據(jù)不在該集合中的值創(chuàng)建一個(gè)新的集合洽损。
8>集合成員關(guān)系和相等
使用“是否相等”運(yùn)算符(==)來判斷兩個(gè)集合是否包含全部相同的值庞溜。
使用isSubsetOf(_:)方法來判斷一個(gè)集合中的值是否也被包含在另外一個(gè)集合中窃肠。
使用isSupersetOf(_:)方法來判斷一個(gè)集合中包含另一個(gè)集合中所有的值芭碍。
使用isStrictSubsetOf(_:)或者isStrictSupersetOf(_:)方法來判斷一個(gè)集合是否是另外一個(gè)集合的子集合或者父集合并且兩個(gè)集合并不相等油讯。
使用isDisjointWith(_:)方法來判斷兩個(gè)集合是否不含有相同的值(是否沒有交集)蚯瞧。
9>字典
字典是一種存儲(chǔ)多個(gè)相同類型的值的容器熄驼。每個(gè)值(value)都關(guān)聯(lián)唯一的鍵(key)宝冕,鍵作為字典中的這個(gè)值數(shù)據(jù)的標(biāo)識(shí)符搁骑。和數(shù)組中的數(shù)據(jù)項(xiàng)不同什荣,字典中的數(shù)據(jù)項(xiàng)并沒有具體順序访娶。我們在需要通過標(biāo)識(shí)符(鍵)訪問數(shù)據(jù)的時(shí)候使用字典商虐,這種方法很大程度上和我們在現(xiàn)實(shí)世界中使用字典查字義的方法一樣。
10>創(chuàng)建一個(gè)空字典
var numberAndStr = [Int:String]() ? ? ? ? ? ? ?這個(gè)例子創(chuàng)建了一個(gè)[Int: String]類型的空字典來儲(chǔ)存整數(shù)的英語命名崖疤。它的鍵是Int型秘车,值是String型。
11>訪問和修改字典
訪問和修改字典中最重要的一個(gè)方法是updateValue(_:forKey:)
作為另一種下標(biāo)方法劫哼,字典的updateValue(_:forKey:)方法可以設(shè)置或者更新特定鍵對(duì)應(yīng)的值叮趴。就像上面所示的下標(biāo)示例,updateValue(_:forKey:)方法在這個(gè)鍵不存在對(duì)應(yīng)值的時(shí)候會(huì)設(shè)置新值或者在存在時(shí)更新已存在的值权烧。和上面的下標(biāo)方法不同的眯亦,updateValue(_:forKey:)這個(gè)方法返回更新值之前的原值伤溉。這樣使得我們可以檢查更新是否成功。
12>字典遍歷
如果我們只是需要使用某個(gè)字典的鍵集合或者值集合來作為某個(gè)接受Array實(shí)例的 API 的參數(shù)妻率,可以直接使用keys或者values屬性構(gòu)造一個(gè)新數(shù)組.
如果我們只是需要使用某個(gè)字典的鍵集合或者值集合來作為某個(gè)接受Array實(shí)例的 API 的參數(shù)乱顾,可以直接使用keys或者values屬性構(gòu)造一個(gè)新數(shù)組:
Swift 的字典類型是無序集合類型。為了以特定的順序遍歷字典的鍵或值宫静,可以對(duì)字典的keys或values屬性使用sort()方法走净。
這樣遍歷出來的key就是有順序的