iOS开发 - 「Swift 学习」Sets集合的遍历与相关的合
2021-11-25 本文已影响0人
俺不是大佬儿
Swift语言Set集合的遍历、合并、拆分、求交集的操作
Set集合的遍历
//用字面量创建集合
var fruitsSet:Set<String> = ["apple","banana","pear","orange","watermelon"]
一、for in
遍历
for fruits in fruitsSet {
print("集合遍历结果:\(fruits)")
/*
集合遍历结果:watermelon
集合遍历结果:apple
集合遍历结果:orange
集合遍历结果:banana
集合遍历结果:pear
*/
}
二、按照特定顺序遍历
Swift语言中Set类型元素是没有确定的顺序,为了能够按照特定顺序来遍历Set中的元素值可用使用sorted()
方法,将返回一个有序的数组
,这个数组的元素排列顺序由操作符“<“对元素进行比较排序的结果来确定
//按照特定顺序遍历
for sortingFruits in fruitsSet.sorted(){
print("The results of the sort:\(sortingFruits)")
/*
The results of the sort:apple
The results of the sort:banana
The results of the sort:orange
The results of the sort:pear
The results of the sort:watermelon
*/
}
集合的操作
let oddDigits:Set<Int> = [1,3,5,7,9]
let evenDigits:Set<Int> = [0,2,4,6,8]
let singleDigitPrimeNumbers:Set = [2, 3, 5, 7]
一、获取两个集合的交集
- 使用
intersection(_:)
方法根据两个集合中都包含的值创建的一个新的集合(获取两个集合的交集)
let intersectionSet = oddDigits.intersection(singleDigitPrimeNumbers).sorted()
print("获取两个集合的交集:\(intersectionSet)")
//打印输出:获取两个集合的交集:[3, 5, 7]
二、获取两个集合不包含的部分
- 使用
symmetricDifference(_:)
方法根据在一个集合中但不在两个集合中的值创建一个新的集合(类似于求异)
let singleDigitPrimeSet = oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
print("根据在一个集合中但不在两个集合中的值创建一个新的集合:\(singleDigitPrimeSet)")
//打印输出:根据在一个集合中但不在两个集合中的值创建一个新的集合:[1, 2, 9]
三、获取两个集合的并集
- 使用
union(_:)
方法根据两个集合的值创建一个新的集合(获取两个集合的并集)
let andSet = oddDigits.union(evenDigits).sorted()
print("获取两个集合的并集:\(andSet)")
//打印输出:获取两个集合的并集:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
四、求补集
- 使用
subtracting(_:)
方法根据不在该集合中的值创建一个新的集合(求补集)
let subtractingSet = oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
print("获取集合oddDigits不包含集合singleDigitPrimeNumbers的部分:\(subtractingSet)")
//打印输出:获取集合oddDigits不包含集合singleDigitPrimeNumbers的部分:[1, 9]