加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Set Programming Guide

发布时间:2020-12-14 01:42:09 所属栏目:百科 来源:网络整理
导读:在Swift中,Set是管理无序集合的对象。当你不关心集合中元素的顺序,只关心每个元素在整个集合中是唯一的时候,你可以使用Set。Set的内部结构图如下所示: 初始化 // MARK: 初始化 private func testInit () { // 空Set var set = SetString() set = [] //

在Swift中,Set是管理无序集合的对象。当你不关心集合中元素的顺序,只关心每个元素在整个集合中是唯一的时候,你可以使用Set。Set的内部结构图如下所示:


初始化

// MARK: 初始化
private func testInit() {
    // 空Set
    var set = Set<String>()
    set = []
    // 通过参数创建
    set = Set(["阳君","937447974"])
    set = Set(arrayLiteral: "阳君","937447974")
    let set2:Set<String> = ["阳君","937447974"]
    print("(set2)")
    // 通过Set创建
    set = Set(set)
    print("(set)")
}

相关属性

// MARK: 相关属性
private func testProperties() {
    let set:Set<String> = ["阳君","937447974","swift"]
    print("count:(set.count)") // 有多少个元素
    print("first:(set.first)") // 顶部元素
    print("isEmpty:(set.isEmpty)") // 是否为空
    print("hashValue:(set.hashValue)") // hash值
    // 首位和末位
    var index = set.startIndex
    index = set.endIndex
    print("index:(index)")
}

查找元素

// MARK: 查找元素
private func testFindingObjects() {
    let set:Set<String> = ["阳君","swift"]
    print("contains:(set.contains("阳君"))") // 是否存在这个元素
    // 查找位置
    var index = set.indexOf("阳君")
    index = set.indexOf { (str) -> Bool in
        return "阳君" == str
    }
    let str = set[index!] // 根据位置获取元素
    print("str:(str)")
    // 遍历输出
    // 无序输出
    for item in set {
        print("item:(item)")
    }
    // 有序输出
    for item in set.sort() {
        print("item:(item)")
    }
}

增加和删除

// MARK: 增加和删除
private func testAddAndRemove() {
    var set:Set<String> = ["阳君","swift"]
    set.insert("IOS") // 增加
    var str = set.remove("IOS") // 删除指定元素,并返回删除的元素
    str = set.removeAtIndex(set.indexOf("阳君")!) // 根据位置删除
    str = set.removeFirst() // 删除首个
    set.removeAll() // 删除所有
    print("str:(str)")
}

结合和重组

// MARK: 结合和重组
private func testCombiningAndRecombining() {
    let a:Set<String> = ["阳君","swift"]
    let b:Set<String> = ["IOS","swift"]
    let c:Set<String> = ["阳君","swift","IOS"]
    print("isEqual:(a == b)") // 是否相等
    print("isSubsetOf:(a.isSubsetOf(c))") // a是否是c的子集
    print("isSupersetOf:(c.isSupersetOf(a))") // a是否是c的子集
    var set = a.intersect(b) // a交c,返回新set;["937447974","swift"]
    set = a.union(b)         // a并b;["阳君","937447974","swift","IOS"]
    set = a.subtract(b)      // a差b,即a-a交b;["阳君"]
    set = a.exclusiveOr(b)   // a并b-a交b;["阳君","IOS"]
    // 不返回结果集,直接修改前set
    set.intersectInPlace(b)   // set交b,结果在set中
    set.unionInPlace(b)       // a并b
    set.subtractInPlace(b)    // a差b,即a-a交b
    set.exclusiveOrInPlace(b) // a并b-a交b
}

排序

// MARK: 排序
private func testSort() {
    let set:Set<String> = ["阳君","IOS","837447974",]
    var array = set.sort() // 排序,升序
    array = set.sort { (str1,str2) -> Bool in
        return str1 < str2
    }
    // 简写
    array = set.sort({ str1,str2 in str1 < str2 })
    array = set.sort({$0 > $1})
    array = set.sort(>)
    print("(array)")
}

其他

参考资料

Set Structure Reference
The Swift Programming Language (Swift 2.1)
NSSet Class Reference

文档修改记录

时间 描述
2015-10-26 根据Swift2.1 Set的API总结

版权所有:http://blog.csdn.net/y550918116j

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读