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()排序。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [The Swift Programming Language 中文版]本页包含内容: Swift 语言提供Arr...
    风林山火阅读 3,342评论 0 1
  • Swift 语言提供 Arrays 、 Sets 和 Dictionaries 三种基本的集合类型用来存储集合数据...
    平凡之路561阅读 2,885评论 0 0
  • 1. 感恩早餐有机会吃素食。 2. 感恩车里的地毯终于干干了。 3. 感恩父母借给我的旧布。 4. 感恩帮忙烘干衣...
    jaychua阅读 1,144评论 1 4
  • 20几岁,你迷茫又着急。你想要旅行,你想要享受生活,你想要房子,你想要汽车。你不断催促自己赶快成长,却沉不下心来安...
    璃漉阅读 1,558评论 0 0

友情链接更多精彩内容