Swift 中有哪些可用的集合类型?


在本教程中,您将学习 Swift 语言中所有可用的集合,例如数组、字典和集合。

集合类型

  • 数组
  • 集合
  • 字典

这些集合在 Swift 中是泛型的,这意味着它们可以存储任何类型的但同一种的值。它们可以处理字符串、整数、类、结构体、布尔值等。您可以存储任何类型的值,并且不会错误地插入错误类型的值。如果您定义了一个字符串数组,则不能插入 Int 或任何其他类型的值。

关于集合的一些要点

类型安全

我们知道 Swift 是一种类型安全的语言,因此集合也是类型安全的。这意味着您可以在集合中存储任何类型的对象。但是您不能插入另一种类型的值。

泛型

Swift 的集合实现为泛型集合。这意味着您可以在任何集合中存储任何类型的元素。没有单独的集合来存储不同类型的元素。例如,您可以创建一个字符串数组、类对象、整数等。

可变性

使用 let 关键字声明的集合是不可变的,这意味着在初始化后您无法更改数组元素。如果您希望在初始化后更改集合,请使用 var 关键字将其设为变量。

按值传递

Swift 的集合类型是按值传递的,而不是按引用传递的。当集合被赋值给另一个变量或作为参数传递时,会创建原始集合的副本。在将集合传递给方法或赋值给另一个变量后对其进行的更改不会反映在原始集合的状态中。

迭代

您可以使用循环遍历集合。您可以使用 for-in 或 forEach 循环来迭代集合的元素。对于字典,您有两个单独的数组用于键和值来迭代它们。

Swift 的集合类型非常重要。让我们深入了解每一个。

数组

数组以有序列表的形式存储相同类型的多个值。数组可以存储重复的值。Swift 的 Array 类型与 Foundation 的 NSArray 类桥接。

语法

您可以像下面这样声明一个空数组:

let array: [Type] = []
let array: Array<Type> = []
let array = [Type]()

您可以在声明数组时为其赋值,如下所示:

var arrayStrings: [String] = ["Alpha", "Beta", "Delta"] // array of strings
let arrayInts: Array<Int> = [12, 23, 34, 45] // array of integers

下标

数组可以通过将索引整数传递到数组名称后缀的一对方括号中来进行下标访问,如下所示:

访问元素

let stringElement = arrayStrings[2] // "Delta"
let intElement = arrayInts[3] // 45

赋值元素

您还可以像下面这样为特定索引赋值:

示例

var arrayStrings: [String] = ["Alpha", "Beta", "Delta"] // array of strings var arrayInts: Array<Int> = [12, 23, 34, 45] // array of integers arrayStrings[2] = "Gamma" print(arrayStrings) arrayInts[1] = 15

输出

["Alpha", "Beta", "Gamma"]

注意 - 要修改数组元素,数组必须是变量而不是常量。此外,当您使用下标赋值新值时,索引必须在数组范围内,否则代码将崩溃。

以下是对数组执行的一些常用方法和属性

.append() - 在最后位置追加新元素。

.removeFirst() - 删除并返回第一个元素。

.removeLast() - 删除并返回最后一个元素。

.popLast() - 弹出最后一个元素。

.reverse() - 反转元素。

.filter() - 根据条件过滤数组元素。

.suffix() - 返回一个子序列,该子序列最多包含给定最大长度,其中包含最后的元素。

.sort() - 使用给定的谓词作为元素之间比较的依据,对数组进行就地排序。

.isEmpty - 检查数组是否为空。

.count - 获取数组中包含的元素个数。

字典

字典以键值对的形式存储与键关联的值。字典的键和值不保持顺序。

您可以使用冒号 (:) 字符创建带有键和值的字典,并将它们分隔开。

语法

let dictionary: [KeyType: ValueType] = [:]
let dictionary: Dictionary<KeyType, ValueType> = [:]
let dictionary = [KeyType: ValueType]()


let dictionary1: [String: Int] = ["Alpha": 1, "Beta": 2, "Gamma": 3]
let dictionary2: Dictionary<Int, String> = [1: "One", 2: "Two", 3: "Three"]

注意 - 当您不确定值类型时,您可以使用任何类型的 values,如下所示:

var dictionary: [String: Any] = ["name": "Amit Gupta",
   "age": 22,
   "address": "New Delhi, India",
   "score": 8.9]

在上面的示例中,您可以看到如何创建字典来存储不同类型的值。您将在大多数项目中使用它。但是,不建议使用 Any 关键字创建字典。始终声明值类型,例如 String、Int 等。

下标

您可以通过传递用方括号 [] 括起来的键名来读取字典中的元素,如下所示:

示例

var dictionary: [String: Any] = ["name": "Amit Gupta", "age": 22, "address": "New Delhi, India", "score": 8.9] if let name = dictionary["name"] as? String { print("Name found: \(name)") } else { print("name does not found") }

输出

Name found: Amit Gupta

您可以像下面这样为字典中用方括号 [] 括起来的键名分配新值:

dictionary["name"] = "Rahul Gupta"

集合

集合以无序列表的形式存储相同类型的唯一值。当顺序不重要并且您想要确保元素唯一性时,可以使用集合代替数组。

示例

var numbers: Set  = [10, 20, 30, 40]
var names: Set = ["Amit", "Rahul", "Pravin", "Sachin"]

如何在集合中插入新元素

names.insert("mohit")

结论

您学习了 Swift 中的集合类型以及如何使用它们。集合在 Swift 语言中起着重要的作用。此外,Swift 还提供了不同的方法和属性来对集合执行不同的操作。深入研究并进行一些练习。

更新于:2022-11-22

1K+ 浏览量

启动您的 职业生涯

完成课程获得认证

开始学习
广告