Swift 集合

集合是唯一数据的集合。也就是说,集合的元素不能重复。例如,

假设我们要存储**学生 ID** 的信息。由于**学生 ID** 不能重复,我们可以使用集合。

Set of student 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]

在上面的示例中,请注意该语句,

var studentID : Set = [112, 114, 115, 118, 116]

在这里,Set 关键字指定 studentID 是一个集合。由于集合的所有元素都是整数,因此 studentIDInt 类型的集合。

但是,我们也可以将集合的类型指定为

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 of Two set A and 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 Operation between two sets A and 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** 的差集包括集合 **A** 中不存在于集合 **B** 的元素。

Difference between two sets A and B
两个集合的差集

我们使用 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** 的所有元素,但不包括共同元素。

Symmetric difference between two set A and 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** 的子集。

 Set A is the subset of set B
集合的子集

我们使用 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

在上面的示例中,setAsetB 具有相同的元素,因此条件

if setA == setB

求值为 true。因此,执行了 if 语句中的 print("Set A and Set B are same") 语句。


创建空集合

在 Swift 中,我们也可以创建空集合。例如,

var emptySet = Set<Int>()
print("Set:", emptySet)

输出

Set: [ ]

需要注意的是,在创建空集合时,我们必须在 <> 中指定数据类型,后跟一个初始化器语法 ()

这里,<Int>() 指定空集合只能存储整数数据元素。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战