Swift - 集合



Swift 的集合用于存储相同类型但彼此不同的值,但它们不像数组那样具有确定的顺序。它运行严格的类型检查,这意味着即使是错误,您也不允许在数组中输入错误的类型。

如果将创建的集合分配给变量,则它始终是可变的,这意味着您可以通过添加、删除或更改其元素来更改它。但是,如果将集合分配给常量,则该集合是不可变的,这意味着您无法向该集合添加新元素。

如果尝试这样做,编译器将抛出错误。Set 使用哈希表来存储元素。默认情况下,所有基本 Swift 值都是可哈希类型,并且可以用作集合值。

在 Swift 中创建集合

要创建特定类型的空集合,我们可以使用Set()初始化器。它显式地接受数据类型。集合可以存储任何数据类型的值,例如浮点数、整数、字符串、字符和双精度数。

var someSet = Set<DataType>()

我们还可以使用数组字面量创建空集合。它是集合的简写表示形式。

var someSet : Set<DataType> = [value]
Or
var someSet : Set = [value]

在 Swift 中初始化集合

我们可以使用以下方法初始化集合:

使用 insert() 方法

这是一个预定义函数,用于向集合添加新元素。它一次添加一个元素。

语法

以下是insert()函数的语法:

set.insert(x)

示例

import Foundation

// Initialize an empty set of String
var mySet = Set<String>()

// Inserting elements into the set using insert() function
mySet.insert("Swift")
mySet.insert("C++")
mySet.insert("C")
mySet.insert("Java")

// Displaying set
print(mySet)
输出

它将产生以下输出:

["Java", "C", "Swift", "C++"]

使用数组字面量

我们还可以使用数组字面量初始化集合。这是初始化集合的最简单方法。此外,使用此方法,我们可以使用多个值初始化集合。

语法

以下是数组字面量的语法:

var someSet : Set = [value1, value2, value3]

示例

import Foundation

// Initialize a set of integers using an array literal
var mySet1 : Set = [3, 55, 6, 22]

var mySet2 : Set<String> = ["Swift", "Java", "C", "C++"]

// Displaying set
print("Set 1:", mySet1)
print("Set 2:", mySet2)
输出

它将产生以下输出:

Set 1: [3, 6, 55, 22]
Set 2: ["C++", "Swift", "C", "Java"]

在 Swift 中迭代集合

迭代集合允许开发人员访问和处理给定集合的各个元素。在 Swift 中,我们可以使用以下方法迭代集合:

使用 for-in 循环

我们可以使用 for-in 循环迭代给定集合的元素。这是访问和顺序处理给定集合的每个元素的最简单、最干净的方法。

示例

import Foundation

// Initialize a set of integers using an array literal
var mySet1 : Set = [3, 55, 6, 22]

print("Elements of Set:")
// Iterating through each element of the set
// Using for-in
for x in mySet1{
   print(x)
}
输出

它将产生以下输出:

Elements of Set:
22
6
3
55

将 enumerated() 函数与 for-in 循环一起使用

如果我们想要获取所有元素及其对应的索引值,那么我们可以将 enumerated() 函数与 for-in 循环一起使用。

示例

import Foundation

// Initialize a set of integer type
var mySet1 : Set = [3, 55, 6, 22]

print("Elements of Set:")

// Iterating through each element of the set 
// Using for-in loop along with enumerated() function
for (index, element) in mySet1.enumerated(){
   print("\(element) is at index \(index)")
}
输出

它将产生以下输出:

Elements of Set:
22 is at index 0
55 is at index 1
6 is at index 2
3 is at index 3

使用 forEach() 函数

Swift 提供了一个名为 forEach() 的预定义函数来迭代给定的集合。它用于在不手动迭代的情况下对给定集合的各个元素执行操作。

示例

import Foundation

// Initialize a set of integer type
var mySet1 : Set = [3, 55, 6, 22]

print("Elements of Set:")

// Iterating over the set using forEach() function
mySet1.forEach { num in
   print(num)
}
输出

它将产生以下输出:

Elements of Set:
3
55
6
22

Swift 中的集合运算

集合运算用于组合、比较和操作集合。集合支持五种类型的运算:

  • 并集
  • 交集
  • 减法
  • 差集
  • 子集

现在让我们详细讨论它们。

并集

并集用于将两个集合的元素组合到一个集合中,而无需重复元素。例如,我们有两个集合 set1 = [2, 4, 5] 和 set2 = [7, 8, 9],因此这两个集合的并集为 [2, 4, 5, 8, 9]。为了对集合执行并集运算,Swift 提供了一个名为 union() 的预定义函数。此方法返回两个集合的并集。

Union

语法

以下是并集的语法:

Set1.union(set2)

示例

import Foundation

// Initialize a set of integer type
var mySet1 : Set = [3, 55, 6, 22]
var mySet2 : Set = [4, 6, 21, 1]

// Union of mySet1 and mySet2
var result = mySet1.union(mySet2)

print("Resultant set: ", result)
输出

它将产生以下输出:

Resultant set:  [55, 1, 3, 21, 22, 4, 6]

交集

交集用于查找两个给定集合中共同存在的元素。例如,我们有两个集合 set1 = [2, 4, 5, 1] 和 set2 = [7, 1, 9, 2],因此这两个集合的交集为 [2, 1]。为了对给定集合执行交集运算,Swift 提供了一个名为 intersection() 的预定义函数。此方法返回两个集合的交集。

Intersection

语法

以下是交集的语法:

Set1.intersection(set2)

示例

import Foundation

// Initialize a set of integer type
var mySet1 : Set = [3, 55, 6, 1]
var mySet2 : Set = [4, 6, 21, 1]

// Intersection of mySet1 and mySet2
var result = mySet1.intersection(mySet2)

print("Resultant set: ", result)
输出

它将产生以下输出:

Resultant set:  [6, 1]

减法

减法用于查找仅存在于 set 1 中但不存在于 set 2 中的元素。例如,我们有两个集合 set1 = [2, 4, 5, 1] 和 set2 = [7, 1, 9, 3],因此这两个集合的减法为 [2, 1, 4, 5]。为了对给定集合执行减法运算,Swift 提供了一个名为 subtraction() 的预定义函数。此方法返回一个新集合,其中包含两个集合的减法。

Subtraction

语法

以下是减法的语法:

Set1.subtracting(set2)

示例

import Foundation

// Initialize a set of integer type
var mySet1 : Set = [3, 55, 6, 1]
var mySet2 : Set = [4, 6, 21, 1]

// Subtract mySet1 from mySet2
var result = mySet2.subtracting(mySet1)

print("Resultant set: ", result)
输出

它将产生以下输出:

Resultant set:  [4, 21]

差集

差集用于查找两个集合中存在的所有元素,除了公共元素。例如,我们有两个集合 set1 = [2, 4, 5, 1] 和 set2 = [7, 1, 9, 3],因此这两个集合之间的差集为 [4, 5, 7, 9, 3]。为了对给定集合执行差集运算,Swift 提供了一个名为 symmetricDifference() 的预定义函数。此方法返回一个新集合,其中包含两个集合的对称差集。

Difference

语法

以下是差集的语法:

Set1.symmetricDifference(set2)

示例

import Foundation

// Initialize a set of integer type
var mySet1 : Set = [3, 55, 6, 1]
var mySet2 : Set = [4, 6, 21, 1]

// Find difference between mySet1 and mySet2
var result = mySet1.symmetricDifference(mySet2)

print("Resultant set: ", result)
输出

它将产生以下输出:

Resultant set:  [4, 55, 3, 21]

子集

如果 set 1 中存在的所有元素都存在于 set 2 中,则一个集合被称为另一个集合的子集。例如,set1 = [2, 4, 5, 1] 是 set2 = [7, 9, 3, 2, 4, 5, 1] 的子集。Swift 提供了一个名为 isSubset() 的预定义方法来检查给定集合是否为另一个集合的子集。如果给定集合是另一个集合的子集,则它将返回 true。否则,它将返回 false。

Subset

语法

以下是 isSubset() 的语法:

Set1.isSubset(set2)

示例

import Foundation

// Initialize a set of integer type
var mySet1 : Set = [6, 1]
var mySet2 : Set = [4, 6, 21, 1]

// Checking whether mySet1 is the subset of mySet2
// Using isSubset() function
var result = mySet1.isSubset(of: mySet2)

print("Is mySet1 is the subset of mySet2?:", result)
输出

它将产生以下输出:

Is mySet1 is the subset of mySet2?: true
广告