Swift 集合(Set)
在本教程中,我们将通过示例学习 Swift 中的集合(Set)及其各种操作。
集合是唯一数据的集合。也就是说,集合的元素不能重复。例如,
假设我们想要存储关于学生 ID 的信息。由于学生 ID 不能重复,我们可以使用一个集合。
在 Swift 中创建集合
以下是我们如何在 Swift 中创建集合。
// create a set of integer type
var studentID : Set = [112, 114, 116, 118, 115]
print("Student ID: \(studentID)")
结果如下:
Student ID: [112, 114, 115, 118, 116]
这里,Set
关键字指定 studentID
是一个集合。由于集合中的所有元素都是整数,studentID
是一个 Int 类型的集合。
但是,我们也可以将集合的类型指定为:
var studentID : Set<Int> = [112, 114, 115, 116, 118]
向集合中添加元素
我们使用 insert()
方法将指定元素添加到集合中。例如,
var numbers: Set = [21, 34, 54, 12]
print("Initial Set: \(numbers)")
// using insert method
numbers.insert(32)
print("Updated Set: \(numbers)")
结果为:
Initial Set: [54, 21, 34, 12]
Updated Set: [54, 21, 34, 12, 32]
在上面的实例中,我们创建了一个名为 employeeID
的集合。注意这一句,
numbers.insert(32)
这里,insert()
将 32 添加到我们的集合中。
从集合中移除元素
我们使用 remove()
方法从集合中移除指定元素。例如,
var languages: Set = ["Swift", "Java", "Python"]
print("Initial Set: \(languages)")
// remove Java from a set
let removedValue = languages.remove("Java")
print("Set after remove(): \(languages)")
结果如下:
Initial Set: ["Python", "Java", "Swift"]
Set after remove(): ["Python", "Swift"]
类似地,我们还可以使用
removeFirst()
- 删除集合的第一个元素removeAll()
- 删除集合中的所有元素
其他集合方法
方法 | 描述 |
---|---|
sorted() | 对集合元素排序 |
forEach() | 对每个元素执行指定的操作 |
contains() | 查询集合中的指定元素 |
randomElement() | 从集合中随机返回一个元素 |
firstIndex() | 返回给定元素的索引 |
在集合上迭代
我们可以使用 for 循环 迭代集合的元素。例如,
let fruits: Set = ["Apple", "Peach", "Mango"]
print("Fruits:")
// for loop to access each fruits
for fruit in fruits {
print(fruit)
}
结果如下:
Fruits:
Peach
Mango
Apple
查找集合元素数
我们可以使用 count
属性来查找集合中存在的元素数。例如,
let evenNumbers = [2,4,6,8]
print("Set: \(evenNumbers)")
// find number of elements
print("Total Elements: \(evenNumbers.count)")
结果如下:
Set: [2, 6, 8, 4]
Total Elements: 4
Swift 集合运算
Swift 集合提供了不同的内置方法来执行数学集合操作,如并集、交集、减法和对称差分。
1.两个集合的并集
两个集合 A 和 B 的并集包括集合 A 和集合 B 的所有元素。
我们使用 union()
方法执行集合并集操作。例如,
// first set
let setA: Set = [1, 3, 5]
print("Set A: ", setA)
// second set
let setB: Set = [0, 2, 4]
print("Set B: ", setB)
// perform union operation
print("Union: ", setA.union(setB))
结果为:
Set A: [1, 5, 3]
Set B: [0, 2, 4]
Union: [0, 5, 2, 4, 1, 3]
setA.union(setB)
相当于 A ⋃ B
集合运算。2.两个集合的交集
两个集合 A 和 B 的交集包括集合 A 和集合 B 之间的公共元素。
我们使用 intersection()
方法来执行两个集合之间的交集。例如:
// first set
let setA: Set = [1, 3, 5]
print("Set A: ", setA)
// second set
let setB: Set = [1, 2, 3]
print("Set B: ", setB)
// perform intersection operation
print("Intersection: ", setA.intersection(setB))
结果为:
Set A: [5, 3, 1]
Set B: [1, 2, 3]
Intersection: [3, 1]
setA.intersection(setB)
相当于 A ⋂ B
集合运算。3.两个集合之间的差异
两个集合 A 和 B 之间的差异包括集合 B 上不存在的集合 A 的元素。
我们使用 subtracting()
方法来执行两个集合之间的差异。例如:
// first set
let setA: Set = [2, 3, 5]
print("Set A: ", setA)
// second set
let setB: Set = [1, 2, 6]
print("Set B: ", setB)
// perform subtraction operation
print("Subtraction: ", setA.subtracting(setB))
结果为:
Set A: [3, 5, 2]
Set B: [1, 6, 2]
Subtraction: [3, 5]
setA.substracting(setB)
相当于 A - B
集合运算。4.两个集合之间的对称差
两个集合 A 和 B 之间的对称差包括 A 和 B 的所有元素,而不包括公共元素。
我们使用 symmetricDifference()
方法在两个集合之间执行对称差分。例如:
// first set
let setA: Set = [2, 3, 5]
print("Set A: ", setA)
// second set
let setB: Set = [1, 2, 6]
print("Set B: ", setB)
// perform symmetric difference operation
print("Symmetric Difference: ", setA.symmetricDifference(setB))
结果为:
Set A: [5, 2, 3]
Set B: [2, 6, 1]
Symmetric Difference: [1, 6, 3, 5]
5.检查集合的子集
如果集合 B 的所有元素都存在于 A 中,则称集合 B 为集合 A 的子集。
我们使用 Subset() 方法检查一个集合是否是另一个集合的子集。例如:
// first set
let setA: Set = [1, 2, 3, 5, 4]
print("Set A: ", setA)
// second set
let setB: Set = [1, 2]
print("Set B: ", setB)
// check if setB is subset of setA or not
print("Subset: ", setB.isSubset(of: setA))
结果为:
Set A: [3, 1, 2, 5]
Set B: [1, 2]
Subset: true
检查两个集合是否相等
我们可以使用 ==
运算符检查两个集合是否相等。例如:
let setA: Set = [1, 3, 5]
let setB: Set = [3, 5, 1]
if setA == setB {
print("Set A and Set B are equal")
}
else {
print("Set A and Set B are different")
}
结果为:
Set A and Set B are equal
在上面的示例中,setA
和 setB
具有相同的元素,因此条件,
if setA == setB
求值为 true。因此,执行 if
内的语句 print("Set A and Set B are same")
。
创建一个空集
在 Swift 中,我们还可以创建一个空集。例如:
var emptySet = Set<Int>()
print("Set:", emptySet)
结果为:
Set: [ ]
重要的是要注意,在创建空集时,我们必须在 <>
中指定数据类型,然后使用初始化语法 ()
。
这里,<Int>()
指定空集只能存储整数数据元素。