Swift学习笔记之---Set集合类型
Posted 油醋三椒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift学习笔记之---Set集合类型相关的知识,希望对你有一定的参考价值。
Set集合类型
Set类型的集合不关注其中元素的顺序,但是其中的元素不可以重复,是一个无序的集合,在进行声明的时候必须指定其类型,或者对其进行赋初值,使得编译器可以自行推断出Set的类型。声明与创建Set集合的示例代码如下:
var set1: Set<Int> = [1, 2, 3, 4]
var set2 = Set(arrayLiteral: 1, 2, 3, 4)
由于Set并不关注于其中元素的顺序,但Set类型依然是 支持通过下标来获取其中的元素,示例如下:
// 获取集合首个元素(顺序不定)
set1[set1.startIndex]
// 进行下标的移动
// 获取某个下标后一个元素
set1[set1.index(after: set1.startIndex)]
// 获取某个下标后几位元素
set1[set1.index(after: set1.startIndex, offsetBy: 3)]
Set的下标操作只能向后移动,不能向前移动。
-
获取集合实例中的信息
// 获取元素个数 set1.count // 判断集合是否为空集合 if set1.isEmpty print("集合为空") // 判断集合中是否包含某个元素 if set1.contains(1) print("集合中包含") // 获取集合中的最大值 set1.max() // 获取集合中的最小值 set1.min()
-
编辑集合(增、删、查、改)
示例如下:
// 向集合中插入一个元素 set1.insert(5) // 移除集合中某个的元素 set1.remove(1) // 移除集合中的第一个元素 array.removeFirst() // 移除集合中某个位置的元素 array.remove(at: set1.index(of: 3)!) // 移除集合中所有元素 array.removeAll()
在使用remove(at:)方法删除集合某个位置的元素时,需要传入一个集合元素的下标值,通过Set实例的index(of:)方法可以获取具体某个元素的下标值,需要注意,这个方法将会返回一个Optional类型的可选值,因为要寻找的元素可能不存在。
-
Set运算
Set集合支持4类数学运算,分别为intersection(交集)运算、symmetricDifferenc(e交集的补集)运算、union(并集)运算和subtracting(补集)运算。intersection运算的结果为两个集合的交集,symmetricDifference运算的结果为a集合与b集合的并集除去a集合与b集合的交集,union运算的结果为两个集合的并集,subtracting运算的结果为a集合除去a集合与b集合的交集。上述4种运算的示例代码如下:
var set3: Set<Int> = [1, 2, 3, 4] var set4: Set<Int> = [1, 2, 5, 6] // 返回交集 2, 1 var setInter = set3.intersection(set4) // 返回交集的补集 3, 6, 5, 4 var setEx = set3.symmetricDifference(set4) // 返回并集 3, 6, 1, 2, 4, 5 var setUni = set3.union(set4) // 返回第二个集合的补集 3, 4 var setSub = set3.subtracting(set4)
使用比较运算符"=="可以比较两个set集合是否相等,当两个集合中的所有元素都相等时,两个集合才相等。
Set中提供了一些方法用于判断集合间的关系,示例代码如下:
var set5: Set = [1, 2] var set6: Set = [2, 3] var set7: Set = [1, 2, 3] var set8: Set = [1, 2, 3] // 判断是否是某个集合的子集,set5是set7的子集,返回true set5.isSubSet(of: set7) // 判断是否是某个集合的超集,set7是set5的超集,返回true set7.isSuperSet(of: set5) // 判断是否是某个集合的真子集,set5是set7的真子集,返回true set5.isStrictSubset(of: set7) // 判断是否是某个集合的真超集,set7是set8的真超集,返回false set7.isStrictSuperset(of: set8)
-
遍历集合
Set也可以通过for-in方式来获取集合中的所有数据,可以通过3中方法来进行遍历:遍历元素、遍历集合的枚举与遍历集合下标。集合枚举会返回一个元组,元组中将集合下标和其对应的值异同返回,示例代码如下:
// for-in for item in set7 print(item) // 遍历集合的枚举 for item in set7.enumerated() print(item) // 遍历集合的下标 for index in set7.indices print(set7[index])
在遍历的时候,可以对其进行排序后再遍历
// 从大到小排序遍历集合 for item in set7.sorted(by: >) print(item)
以上是关于Swift学习笔记之---Set集合类型的主要内容,如果未能解决你的问题,请参考以下文章