Set Programming Guide

前端之家收集整理的这篇文章主要介绍了Set Programming Guide前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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


初始化

  1. // MARK: 初始化
  2. private func testInit() {
  3. // 空Set
  4. var set = Set<String>()
  5. set = []
  6. // 通过参数创建
  7. set = Set(["阳君","937447974"])
  8. set = Set(arrayLiteral: "阳君","937447974")
  9. let set2:Set<String> = ["阳君","937447974"]
  10. print("\(set2)")
  11. // 通过Set创建
  12. set = Set(set)
  13. print("\(set)")
  14. }

相关属性

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

查找元素

  1. // MARK: 查找元素
  2. private func testFindingObjects() {
  3. let set:Set<String> = ["阳君","swift"]
  4. print("contains:\(set.contains("阳君"))") // 是否存在这个元素
  5. // 查找位置
  6. var index = set.indexOf("阳君")
  7. index = set.indexOf { (str) -> Bool in
  8. return "阳君" == str
  9. }
  10. let str = set[index!] // 根据位置获取元素
  11. print("str:\(str)")
  12. // 遍历输出
  13. // 无序输出
  14. for item in set {
  15. print("item:\(item)")
  16. }
  17. // 有序输出
  18. for item in set.sort() {
  19. print("item:\(item)")
  20. }
  21. }

增加删除

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

结合和重组

  1. // MARK: 结合和重组
  2. private func testCombiningAndRecombining() {
  3. let a:Set<String> = ["阳君","swift"]
  4. let b:Set<String> = ["IOS","swift"]
  5. let c:Set<String> = ["阳君","swift","IOS"]
  6. print("isEqual:\(a == b)") // 是否相等
  7. print("isSubsetOf:\(a.isSubsetOf(c))") // a是否是c的子集
  8. print("isSupersetOf:\(c.isSupersetOf(a))") // a是否是c的子集
  9. var set = a.intersect(b) // a交c,返回新set;["937447974","swift"]
  10. set = a.union(b) // a并b;["阳君","937447974","swift","IOS"]
  11. set = a.subtract(b) // a差b,即a-a交b;["阳君"]
  12. set = a.exclusiveOr(b) // a并b-a交b;["阳君","IOS"]
  13. // 不返回结果集,直接修改前set
  14. set.intersectInPlace(b) // set交b,结果在set中
  15. set.unionInPlace(b) // a并b
  16. set.subtractInPlace(b) // a差b,即a-a交b
  17. set.exclusiveOrInPlace(b) // a并b-a交b
  18. }

排序

  1. // MARK: 排序
  2. private func testSort() {
  3. let set:Set<String> = ["阳君","IOS","837447974",]
  4. var array = set.sort() // 排序,升序
  5. array = set.sort { (str1,str2) -> Bool in
  6. return str1 < str2
  7. }
  8. // 简写
  9. array = set.sort({ str1,str2 in str1 < str2 })
  10. array = set.sort({$0 > $1})
  11. array = set.sort(>)
  12. print("\(array)")
  13. }

其他

参考资料

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

猜你在找的Swift相关文章