集合類型

1>集合

Swift 語言提供Arrays、Sets和Dictionaries三種基本的集合類型用來存儲集合數(shù)據(jù)。數(shù)組(Arrays)是有序數(shù)據(jù)的集。集合(Sets)是無序無重復數(shù)據(jù)的集。字典(Dictionaries)是無序的鍵值對的集。

2>創(chuàng)建一個帶有默認值的數(shù)組

eg:?

3>通過兩個數(shù)組相加創(chuàng)建一個數(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>用字面量構造數(shù)組

我們可以使用字面量來進行數(shù)組構造,這是一種用一個或者多個數(shù)值構造數(shù)組的簡單方法。字面量是一系列由逗號分割并由方括號包含的數(shù)值:

[value 1, value 2, value 3]。

var arr :[String] = ["heng","ha"]

由于swift的推斷機制,我們也可以這樣構造

eg: var arr ?= ["heng","ha"] ? swift可以自動推斷[String]是這個數(shù)組的正確類型

5>訪問和修改數(shù)組

我們可以通過數(shù)組的方法和屬性來訪問和修改數(shù)組,或者使用下標語法??梢允褂脭?shù)組的只讀屬性count來獲取數(shù)組中的數(shù)據(jù)項數(shù)量.

使用布爾值屬性isEmpty作為檢查count屬性的值是否為0

也可以使用append(_:)方法在數(shù)組后面添加新的數(shù)據(jù)項.

除此之外,使用加法賦值運算符(+=)也可以直接在數(shù)組后面添加一個或多個擁有相同類型的數(shù)據(jù)項:

可以直接使用下標語法來獲取數(shù)組中的數(shù)據(jù)項,把我們需要的數(shù)據(jù)項的索引值直接放在數(shù)組名稱的方括號中:

eg: let element = arr[0]

我們也可以用下標來改變某個已有索引值對應的數(shù)據(jù)值:

eg: arr[0] = "nihao"

調(diào)用數(shù)組的insert(_:atIndex:)方法來在某個具體索引值之前添加數(shù)據(jù)項:

eg: ??

打印的值為[4,2,2,2]

類似的我們可以使用removeAtIndex(_:)方法來移除數(shù)組中的某一項。這個方法把數(shù)組在特定索引值中存儲的數(shù)據(jù)項移除并且返回這個被移除的數(shù)據(jù)項.

使用contains(_:)方法去檢查數(shù)組中是否包含一個特定的值

6>集合

集合(Set)用來存儲相同類型并且沒有確定順序的值。當集合元素順序不重要時或者希望確保每個元素只出現(xiàn)一次時可以使用集合而不是數(shù)組。

Swift 的Set類型沒有確定的順序,為了按照特定順序來遍歷一個Set中的值可以使用sort()方法,它將根據(jù)提供的序列返回一個有序集合.

7>基本集合操作


使用intersect(_:)方法根據(jù)兩個集合中都包含的值創(chuàng)建的一個新的集合。

使用exclusiveOr(_:)方法根據(jù)在一個集合中但不在兩個集合中的值創(chuàng)建一個新的集合。

使用union(_:)方法根據(jù)兩個集合的值創(chuàng)建一個新的集合。

使用subtract(_:)方法根據(jù)不在該集合中的值創(chuàng)建一個新的集合。

8>集合成員關系和相等

使用“是否相等”運算符(==)來判斷兩個集合是否包含全部相同的值。

使用isSubsetOf(_:)方法來判斷一個集合中的值是否也被包含在另外一個集合中。

使用isSupersetOf(_:)方法來判斷一個集合中包含另一個集合中所有的值。

使用isStrictSubsetOf(_:)或者isStrictSupersetOf(_:)方法來判斷一個集合是否是另外一個集合的子集合或者父集合并且兩個集合并不相等。

使用isDisjointWith(_:)方法來判斷兩個集合是否不含有相同的值(是否沒有交集)。

9>字典

字典是一種存儲多個相同類型的值的容器。每個值(value)都關聯(lián)唯一的鍵(key),鍵作為字典中的這個值數(shù)據(jù)的標識符。和數(shù)組中的數(shù)據(jù)項不同,字典中的數(shù)據(jù)項并沒有具體順序。我們在需要通過標識符(鍵)訪問數(shù)據(jù)的時候使用字典,這種方法很大程度上和我們在現(xiàn)實世界中使用字典查字義的方法一樣。

10>創(chuàng)建一個空字典

var numberAndStr = [Int:String]() ? ? ? ? ? ? ?這個例子創(chuàng)建了一個[Int: String]類型的空字典來儲存整數(shù)的英語命名。它的鍵是Int型,值是String型。

11>訪問和修改字典

訪問和修改字典中最重要的一個方法是updateValue(_:forKey:)

作為另一種下標方法,字典的updateValue(_:forKey:)方法可以設置或者更新特定鍵對應的值。就像上面所示的下標示例,updateValue(_:forKey:)方法在這個鍵不存在對應值的時候會設置新值或者在存在時更新已存在的值。和上面的下標方法不同的,updateValue(_:forKey:)這個方法返回更新值之前的原值。這樣使得我們可以檢查更新是否成功。


12>字典遍歷

如果我們只是需要使用某個字典的鍵集合或者值集合來作為某個接受Array實例的 API 的參數(shù),可以直接使用keys或者values屬性構造一個新數(shù)組.

如果我們只是需要使用某個字典的鍵集合或者值集合來作為某個接受Array實例的 API 的參數(shù),可以直接使用keys或者values屬性構造一個新數(shù)組:

Swift 的字典類型是無序集合類型。為了以特定的順序遍歷字典的鍵或值,可以對字典的keys或values屬性使用sort()方法。

這樣遍歷出來的key就是有順序的

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容