Swift_Set详解
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详解的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
随机推荐
- c#做的查找文件夹内内容的小工具
第一次写博客有点激动啊QAQ 来新单位,一直没活干,公司代码控制器太多,其中有很多文件夹,每次找一个控制器都老找不到,我又不愿意用VS的全局搜索,想着没事就做了个查找控制器的小工具.代码如下: 先添加 ...
- javaEE环境搭建-eclipse
1. javaEE环境搭建: (1) JDK1.8 (2) eclipse-JavaEE (3) tomcat-7.0.90 下载地址: https://tomca ...
- Linux 连接 Xshell 及网络配置
一.准备工具 在WMware上已经装有Linux系统:WMware安装CentOS7文章. xshell连接工具: 二.修改相关配置 切换到root用户下: 配置主机名(可选): #方法一:替换原主机 ...
- 函数进阶3 —— 生成器、yield from
今天我们在进一步了解一下,生成器. ①: def func(): print('这是函数func') return '函数func' func() 结果是 这是函数func ②: def func1( ...
- Vue基础知识之vue-resource和axios
Vue基础知识之vue-resource和axios 原文链接:http://www.cnblogs.com/Juphy/p/7073027.html vue-resource Vue.js是数据驱 ...
- em和px
在国内网站中,包括三大门户,以及“引领”中国网站设计潮流的蓝色理想,ChinaUI等都是使用了px作为字体单位.只有百度好歹做了个可调的表率.而 在大洋彼岸,几乎所有的主流站点都使用em作为字体单位, ...
- win7 下vs2008试用版破解
用过微软的开发套件Visual Studio 2008,如果用的是试用版本,超过90天,就会过期,出现下面这张图片显示的 下面介绍破解的步骤: 1.首先打开控制面板——然后找到卸载或更改程序——然后找 ...
- sqlserver row_number函数的用法
ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号 必须和over一起使用 select *,ROW_NUMBER() over(order by prod ...
- zan-framework mysql连接
①根据文档内容要配置sqlmap连接池的读写白名单 http://doc.zanphp.io/zh/libs/connection_pool.html 示例代码 // demo.demo.demo_s ...
- OO思想举例,控制翻转,依赖注入
(转自kumaws,原帖地址:http://www.cnblogs.com/kumaws/archive/2009/04/06/from_interface_to_DependencyInjectio ...