美文网首页
Collection Types

Collection Types

作者: 夜雨聲煩_ | 来源:发表于2017-10-10 17:25 被阅读0次
    • 创建数组,数组简写 [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()排序。

    相关文章

      网友评论

          本文标题:Collection Types

          本文链接:https://www.haomeiwen.com/subject/zspuyxtx.html