Swift_Set详解


点击查看源码

初始化

//初始化
fileprivate func testInit() {
//空Set
var set = Set<String>()
print(set)
set = []
print(set) //通过参数设置
set = Set(["XuBaoAiChiYu","1045214799"])
print(set) set = Set(arrayLiteral: "XuBaoAiChiYu","1045214799")
print(set) set = Set(set)
print(set) let set2: Set<String> = ["XuBaoAiChiYu","1045214799"]
print(set2) /* print []
[]
["1045214799", "XuBaoAiChiYu"]
["1045214799", "XuBaoAiChiYu"]
["1045214799", "XuBaoAiChiYu"]
["1045214799", "XuBaoAiChiYu"] */
}

相关属性

//相关属性
fileprivate func testProperties() { let set: Set<String> = ["iOS","XuBaoAiChiYu","1045214799"]
print(set) print("count:\(set.count)") // 有多少个元素
print("first:\(set.first)") // 顶部元素
print("isEmpty:\(set.isEmpty)") // 是否为空
print("hashValue:\(set.hashValue)") // hash值 // 首位和末位
var index = set.startIndex
print("index:\(index)") index = set.endIndex
print("index:\(index)") /* print ["1045214799", "iOS", "XuBaoAiChiYu"]
count:3
first:Optional("1045214799")
isEmpty:false
hashValue:7244437487393105174
index:SetIndex<String>(_value: Swift.SetIndexRepresentation<Swift.String>._native(Swift._NativeSetIndex<Swift.String>(nativeStorage: , offset: 0)))
index:SetIndex<String>(_value: Swift.SetIndexRepresentation<Swift.String>._native(Swift._NativeSetIndex<Swift.String>(nativeStorage: , offset: 4))) */
}

查找元素

//查找元素
fileprivate func testFindingObjects() {
let set: Set<String> = ["iOS","XuBaoAiChiYu","1045214799"]
print(set) //是否存在这个元素
print("contains:\(set.contains("XuBaoAiChiYu"))") //查找位置
var index = set.index(of: "XuBaoAiChiYu");
print(index!) index = set.index(where: { (string) -> Bool in
return string == "XuBaoAiChiYu"
})
print(index!) let string = set[index!]
print(string) print("--------------")
//无序遍历
for item in set {
print(item)
}
print("--------------")
//有序遍历
for item in set.sorted() {
print(item)
}
print("--------------") /* print ["1045214799", "iOS", "XuBaoAiChiYu"]
contains:true
SetIndex<String>(_value: Swift.SetIndexRepresentation<Swift.String>._native(Swift._NativeSetIndex<Swift.String>(nativeStorage: , offset: 3)))
SetIndex<String>(_value: Swift.SetIndexRepresentation<Swift.String>._native(Swift._NativeSetIndex<Swift.String>(nativeStorage: , offset: 3)))
XuBaoAiChiYu
--------------
1045214799
iOS
XuBaoAiChiYu
--------------
1045214799
XuBaoAiChiYu
iOS
-------------- */
}

增加和删除

//增加和删除
fileprivate func testAddAndRemove() { var set:Set<String> = ["iOS","XuBaoAiChiYu","1045214799"]
print(set) set.insert("Swift") //增加
print(set) var str = set.remove("Swift") //删除指定元素 并返回删除的元素
print(str!) str = set.remove(at: set.index(of: "XuBaoAiChiYu")!) //根据位置删除
print(str!) str = set.removeFirst() //删除首个
print(str!) set.removeAll() //删除所有
print(set) /* print ["1045214799", "iOS", "XuBaoAiChiYu"]
["Swift", "iOS", "1045214799", "XuBaoAiChiYu"]
Swift
XuBaoAiChiYu
iOS
[] */
}

结合和重组

//结合和重组
fileprivate func testCombiningAndRecombining() { let a:Set<String> = ["XuBaoAiChiYu", "1045214799", "swift"]
print(a)
let b:Set<String> = ["iOS", "1045214799", "swift"]
print(b)
let c:Set<String> = ["XuBaoAiChiYu", "1045214799", "swift", "iOS"]
print(c) print("isEqual:\(a == b)") //是否相等
print("isSubsetOf:\(a.isSubset(of: c))") //a是否是c的子集
print("isSupersetOf:\(c.isSuperset(of: a))") //a是否是c的子集 var set = a.intersection(b) //a交b 返回新set
print(set)
set = a.union(b) //a并b
print(set)
set = a.subtracting(b) //a差b 即a-a交b
print(set)
set = a.symmetricDifference(b) //a并b-a交b
print(set) // 不返回结果集,直接修改前set
set.formIntersection(b) //set交b,结果在set中
print(set)
set.formUnion(b) //a并b
print(set)
set.subtract(b) // a差b,即a-a交b
print(set)
set.formSymmetricDifference(b) //a并b-a交b
print(set) /* print ["swift", "1045214799", "XuBaoAiChiYu"]
["swift", "iOS", "1045214799"]
["iOS", "swift", "1045214799", "XuBaoAiChiYu"]
isEqual:false
isSubsetOf:true
isSupersetOf:true
["swift", "1045214799"]
["iOS", "swift", "1045214799", "XuBaoAiChiYu"]
["XuBaoAiChiYu"]
["iOS", "XuBaoAiChiYu"]
["iOS"]
["swift", "iOS", "1045214799"]
[]
["swift", "iOS", "1045214799"] */
}

排序

//排序
fileprivate func testSort() {
let set:Set<String> = ["XuBaoAiChiYu", "1045214799", "swift", "iOS", "1045214799",]
print(set) var array = set.sorted() //排序 升序
print(array) array = set.sorted { (str1, str2) -> Bool in
return str1 < str2
}
print(array) //简写
array = set.sorted(by: { str1,str2 in str1 < str2 })
print(array) array = set.sorted(by: {$0 > $1})
print(array) array = set.sorted(by: >)
print(array) /* print ["iOS", "swift", "1045214799", "XuBaoAiChiYu"]
["1045214799", "XuBaoAiChiYu", "iOS", "swift"]
["1045214799", "XuBaoAiChiYu", "iOS", "swift"]
["1045214799", "XuBaoAiChiYu", "iOS", "swift"]
["swift", "iOS", "XuBaoAiChiYu", "1045214799"]
["swift", "iOS", "XuBaoAiChiYu", "1045214799"] */
}

Swift_Set详解的更多相关文章

  1. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  2. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  3. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  4. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  5. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  6. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  7. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  8. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  9. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

随机推荐

  1. Apache同一个IP上配置多域名

    NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@yourdomain.com DocumentRoot &quo ...

  2. Javascript怎么跳出循环,嵌套循环。

    今天要实现一个功能,在数组a中的每一项,对应数组b中的每一项,如果对应上了就给数组b的checked增加ture属性,如果查找不到就给数组b的checked增加false属性. 如果有哪里写的不对欢迎 ...

  3. Angular6路由复用与延迟加载的冲突解决——看看有备无患

    结论:   结论放最上面,送给匆匆查资料的你: 同时使用延迟加载 + 路由复用,一定不能使用route.routeConfig.path做key去缓存,否则会死得难看. 经实测(我没有完全去解读源代码 ...

  4. MySQL8.0加载文件内容报错: ERROR 1148: The used command is not allowed with this MySQL version

    mysql数据库将文件内容加载到表中报错: mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet LINES TERMINAT ...

  5. JavaScript写的随机选人真实案例

    JavaScript写的随机选人真实案例 因工作需要,写了一个随机选人的小网页,先看效果图. 背景也是动态的,只不过在写的时候碰到个问题,就是如果把生成动态流星雨的画布放到上生成随机数的操作界面之上的 ...

  6. 科学计算基础包——Numpy

    一.NumPy简介 NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. 1.NumPy的主要功能 (1)ndarray:一个多维数组结构,高效且节省空间. (2)无需 ...

  7. canvas-菜鸟版画布时钟

    这是以前自己练习写的一个画布时钟 <!DOCTYPE html><html lang="en"> <head> <meta charset ...

  8. js实现瀑布流加载图片效果

    今天学习了一个瀑布流加载效果,很多网站都有瀑布流效果,瀑布流就是很多产品显示在网页上,宽相同,高度不同,表现为多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.原理是:1. ...

  9. HCNA多区域OSPF配置

    1.拓扑图 2.各路由器配置角本 ospf 多区域配置 #R5配置 sys sysname AR5 interface s2// ip add 10.0.35.5 255.255.255.0 inte ...

  10. 推荐一个很好用的脚本session snapper

    源网址http://tech.e2sn.com/oracle-scripts-and-tools/session-snapper 内容: If you want to just download Sn ...