set集合 结构体_Swift - 集合(Set)使用详解(附样例)
三、元素访问与操作
1,获取元素个数:count
let fruits: Set = ["apple", "pear", "orange"]
print(fruits.count)
2,判断集合是否为空:isEmpty
let fruits: Set = ["apple", "pear", "orange"]
if fruits.isEmpty {
print("集合是空的")
}else{
print("集合不是空的")
}
3,添加一个新元素:insert()fruits.insert("grape")
4,删除一个元素:remove()
如果删除值是该 Set的一个元素,则删除该元素并且返回被删除的元素值。
如果该 Set不包含该值,则返回 nil。
fruits.remove("apple")
5,删除所有元素:removeAll()fruits.removeAll()
6,判断集合中是否包含特定值:contains()if fruits.contains("apple") {
print("集合中存在该元素。")
}else{
print("集合中不存在该元素。")
}
7,遍历集合元素
(1)可以使用 for in循环遍历一个 Set中的所有值。
var fruits: Set = ["apple", "pear", "orange"]
for fruit in fruits {
print("\(fruit)")
}
(2)如果想按照特定顺序来遍历一个 Set中的值可以使用 sorted()方法。它将返回一个有序数组,这个数组的元素排列顺序由操作符“
var fruits: Set = ["apple", "pear", "orange"]
for fruit in fruits.sorted() {
print("\(fruit)")
}
四、集合的操作
1,过滤集合元素
使用 filter函数可以过滤并返回一个新的 Set。
let fruits: Set = ["apple", "pear", "orange"]
//过滤出以“e”结尾的所有元素
let result = fruits.filter({ $0.hasSuffix("e") })
print(result)
2,两个集合的基本操作
(1)Set提供了如下4 个方法来实现通过现有的两个集合创建一个新的集合:
intersection(_:):根据两个集合中都包含的值创建的一个新的集合。
symmetricDifference(_:):根据在一个集合中但不在两个集合中的值创建一个新的集合。
union(_:):根据两个集合的值创建一个新的集合。
subtracting(_:):根据不在该集合中的值创建一个新的集合。
(2)下面是一个简单的使用样例
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
let set1 = oddDigits.union(evenDigits).sorted() // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let set2 = oddDigits.intersection(evenDigits).sorted() // []
let set3 = oddDigits.subtracting(singleDigitPrimeNumbers).sorted() // [1, 9]
let set4 = oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted() // [1, 2, 9]
3,判断两个集合之间的关系
(1)我们可以通过如下几种方法进行判断:
==:判断两个集合是否包含全部相同的值。
isSubset(of:):判断一个集合中的值是否也被包含在另外一个集合中。
isSuperset(of:):判断一个集合中包含另一个集合中所有的值。
isStrictSubset(of:):判断一个集合是否是另外一个集合的子集合,并且两个集合并不相等。
isStrictSuperset(of:):判断一个集合是否是另外一个集合的父集合,并且两个集合并不相等。
isDisjoint(with:):判断两个集合是否不含有相同的值(是否没有交集)。
(2)下面是一个简单的使用样例
let set1: Set = [1, 3, 5]
let set2: Set = [1, 3, 5, 7, 9]
let set3: Set = [1, 2, 3]
set1 == set2 // false
set1.isSubset(of: set2) // true
set1.isSuperset(of: set2) // false
set1.isStrictSubset(of: set2) // true
set1.isStrictSuperset(of: set2) // false
set1.isDisjoint(with: set3) // false
五、集合类型的哈希值