7.Swift 中的Set集合
2016-01-29 15:11
260 查看
在Swift当中, 除了数组, 字典之外, 我们还有另外一个集合类型叫做Set, Set集合并没有确定的排列顺序, 所以说是无序的, 但Set有一个优点就是它可以保证每个元素只出现一次, 所以说, 当元素顺序不重要时, 并且元素需要唯一的, 那我们就可以使用Set集合了, 下面让我们来看看.
里面重复的元素直接被remove掉, 只剩下没有重复的元素.
Set集合也可以使用insert来插入元素
也可以使用remove来删除对应的元素.
也可以通过contains来查询Set集合是否包含元素
有序遍历
PS: 由于我这里的元素较少, 所以输出的结果都一致, 一旦元素多了, 输出的结果就会有所改变.
Set集合不相交得元素, 两个集合当中不相同元素所组合成的一个新的集合.
Set集合并集, 两个集合中的所有元素并集在一起, 但重复的元素只保留一个.
Set集合的中的排他集合, 判断B集合中的元素是否在A集合中也包含, 如果有, 就把相同的元素去掉, 剩下没有重复的元素组合成一个新的集合.
好了, 这次我们就讲到这里, 下次继续
1.Set集合的声明
// 1.隐式声明 var nameSet: Set<String>? // 2.使用Set声明, Swift会自动判断元素的类型 var ageSet: Set = [20, 30, 25, 10] // 3.使用Set<类型>声明, 限制该Set集合是String类型. var personSet: Set<String> = ["xiaoming", "zhangsan", "zhangsan"] print(personSet) // 输出的结果为: ["xiaoming", "zhangsan"]
里面重复的元素直接被remove掉, 只剩下没有重复的元素.
2.Set集合的访问和修改
Set集合一样可以使用isEmpty来判断是否为nil.if personSet.isEmpty { print("Set don't have people.") } else { print("Set have \(personSet.count) people.") } // 输出来得结果为: Set have 2 people.
Set集合也可以使用insert来插入元素
personSet.insert("Lisi") print(personSet) // 输出的结果为: ["Lisi", "xiaoming", "zhangsan"]
也可以使用remove来删除对应的元素.
if let removedOne = personSet.remove("xiaoming") { print("xiaoming? he not here.") } else { print("xiaoming here.") } // 输出的结果为: xiaoming? he don't here.
也可以通过contains来查询Set集合是否包含元素
if personSet.contains("zhangsan") { print("zhangsan here.") } else { print("zhangsan not here.") } // 输出的结果为: zhangsan here.
3.Set集合的遍历
直接遍历for people in personSet { print(people) } // 输出结果为: // Lisi // zhangsan
有序遍历
for people in personSet.sort() { print("\(people)") } // 输出结果为: // Lisi // zhangsan
PS: 由于我这里的元素较少, 所以输出的结果都一致, 一旦元素多了, 输出的结果就会有所改变.
4.Set集合的操作
Set集合的交集, 所谓的交集就是, 两个Set集合中相同的元素所组合成的一个新的集合.var setOne: Set = [1, 2, 3, 4] var setTwo: Set = [3, 4, 5] let setThree = setOne.intersect(setTwo) print(setThree) // 输出的结果为: [3, 4]
Set集合不相交得元素, 两个集合当中不相同元素所组合成的一个新的集合.
let setFour = setOne.exclusiveOr(setTwo) print(setFour) // 输出的结果:[5, 2, 1]
Set集合并集, 两个集合中的所有元素并集在一起, 但重复的元素只保留一个.
let setFive = setOne.union(setTwo) print(setFive) // 输出的结果为: [5, 2, 3, 1, 4]
Set集合的中的排他集合, 判断B集合中的元素是否在A集合中也包含, 如果有, 就把相同的元素去掉, 剩下没有重复的元素组合成一个新的集合.
let setSix = setOne.subtract(setTwo) print(setSix) // 输出的结果为: [2, 1]
5.Set集合的其他操作
// 判断setTwo集合是否包含setOne集合中得元素 let setThree = setOne.isSubsetOf(setTwo) print(setThree) // 判断setOne的元素是否都包含在setTwo集合中 let setFour = setTwo.isSupersetOf(setOne) print(setFour) // 判断setOne集合和setTwo集合是否不含有相同的值, 也就是说两个集合没有相交的元素 let setFive = setTwo.isDisjointWith(setOne) print(setFive) // 判断setTwo是否是setOne的超集 let setSix = setOne.isStrictSupersetOf(setTwo) print(setSix) // 判断setTwo是否是setOne的父集, 但不相等 let setSeven = setOne.isStrictSubsetOf(setTwo) print(setSeven)
好了, 这次我们就讲到这里, 下次继续
相关文章推荐
- Android Native 绘图方法
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- 用VBScript写合并文本文件的脚本
- oracle列合并的实现方法
- C#中struct和class的区别详解
- 使用BAT一句话命令实现快速合并JS、CSS
- SQL 合并多行记录的方法总汇
- C#实现简单合并word文档的方法
- C#自适应合并文件的方法
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 深入了解PHP类Class的概念
- GridView单元格合并
- 如何合并多个 .NET 程序集
- jquery 表单验证之通过 class验证表单不为空
- 使用UglifyJS合并/压缩JavaScript的方法
- setAttribute 与 class冲突解决
- 高性能WEB开发 JS、CSS的合并、压缩、缓存管理