Collection Types

  • 創建數組,數組簡寫 [Int]

    var someInts = [Int]()
    var threeDoubles = Array(repeating: 0.0, count: 3)
    var sixDoubles = threeDoubles + anotherThreeDoubles
    var shoppingList:[String] = ["Eggs","Milk"]
    var shorthandShoppingList = ["Eggs","Milk"]
    
  • 使用“append”在數組末尾添加元素,或者“+=”符號

    someInts.append(3)
    shoppingList += ["Baking Powder"]
    
  • 使用“repeat”創建素有元素值均一樣的默認數組

    var threeDoubles = Array(repeating: 0.0, count: 3)
    
  • 使用“...”訪問區間元素,并且可在數目不同時替換

    shoppingList[4...6] = ["Bananas", "Apples"]
    
  • 使用remove對數組進行移除操作,注意返回的是被移除元素而非數組

    let apples = shoppingList.removeLast()
    //"Apples"
    
  • 使用“enumerated()”及元組獲取數組當前序號和對應值

    for (index, value) in shoppingList.enumerated() {
        print("Item \(index + 1) : \(value)")
        //Item 5 : Bananas
    }
    
  • 無需排序且值唯一不重復使用 Set

  • Set 并沒有像 Array 和 Dictionary 那樣的簡寫

  • 放入 Set 中(或者作為字典中 Key)的類型必須為遵循 Hashable 協議的類型。String、Double、Int 等基本類型默認遵循該協議。用戶手動創建的類型必須遵循該協議且實現 hashValue 的 get 方法才可以放入 Set 中(或者作為字典中 Key)

  • 使用 .sorted() 來獲取排序后的Set,實際上是根據 hashValue 排序。

  • 區別于 Array,Set 有時需要顯示指明變量類型為 Set

    var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
    
  • Set 中可以有重復元素,不會造成錯誤,會自動過濾掉重復元素。

  • 使用 contain 判斷是否包含某元素,使用 remove 移除指定元素,同時返回該元素(非移除后Set)

    if favoriteGenres.contains("Funk") {
        print("I get up on the good foot.")
    } else {
        print("It's too funky in here.")
    }
    // Prints "It's too funky in here."
    
    if let removedGenre = favoriteGenres.remove("Rock") {
      print("\(removedGenre)? I'm over it.")
    } else {
        print("I never much cared for that.")
    }
    // Prints "Rock? I'm over it."
    
  • 兩個Set之間的運算
    使用a.intersection(b)獲取a與b相交部分
    使用a.symmetricDifference(b)獲取a與b相交部分外的所有元素
    使用a.union(b)獲取全集
    使用a.subtracting(b)獲取a除去所包含b的部分

    使用a==b,判斷a是否等于b,即a與b包含完全相同的元素
    使用a.isSubset(of: b)判斷a是否是b的子集
    使用a.isSuperset(of: b)判斷a是否是b的全集
    使用a. isStrictSubset(of: b)判斷a是否是b的子集,且a不等于b
    使用isStrictSuperset(of: b)判斷a是否是b的全集,且a不等于b
    使用a.isDisjoint(of: b)判斷a是否與b不相交

  • 字典中的 key 必須遵循 Hashable 協議

  • 字典類型的簡寫 <Key , Value> 或者 [Key : Value] 均可

    var dictionaryA: Dictionary<String,String>
    var dictionaryB: [String:String]
    
  • 創建字典

    var namesOfIntegers = [Int: String]()
    
  • 字典賦值

    namesOfIntegers[16] = "sixteen"
    
  • 使用updateValue(_:forKey:)方法上面賦值方法在賦值時作用相同,不同的是會返回一個原值的可選對象(原值存在返回原值,原值不存在返回nil)

  • 根據特定 key 取出對應 value 的時候由于 key 可能會不存在,相應的 value 可能會為空,所以返回的是可選類型。

  • 使用= nil 刪除字典中一對值,也可以使用removeValue(forKey:),后者會返回可選類型的原值,也就是說當這對值存在時會在刪除的同時返回 value 的值,否則會返回空。

  • 使用元組(key, value)遍歷字典,也可以單獨遍歷字典的keys或者values。

  • 使用數組表示字典keys和values

    let airportCodes = [String](airports.keys)
    let airportValues = [String](airports.values)
    
  • 字典keys無序,可以使用sort()排序。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • [The Swift Programming Language 中文版]本頁包含內容: Swift 語言提供Arr...
    風林山火閱讀 494評論 0 1
  • Swift 語言提供 Arrays 、 Sets 和 Dictionaries 三種基本的集合類型用來存儲集合數據...
    平凡之路561閱讀 378評論 0 0
  • 1. 感恩早餐有機會吃素食。 2. 感恩車里的地毯終于干干了。 3. 感恩父母借給我的舊布。 4. 感恩幫忙烘干衣...
    jaychua閱讀 127評論 1 4
  • 20幾歲,你迷茫又著急。你想要旅行,你想要享受生活,你想要房子,你想要汽車。你不斷催促自己趕快成長,卻沉不下心來安...
    璃漉閱讀 211評論 0 0