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] 均可

    var dictionaryA: Dictionary
    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()排序。

你可能感兴趣的:(Collection Types)