跳到主要内容

Swift中的数组

提示
  1. 创建和访问 Swift 数组:Swift 数组存储相同类型的数据,可以通过索引访问其元素。类型推断允许创建数组而无需明确指定类型,也可以创建空数组。
  2. 修改和管理数组元素:Swift 数组支持通过 append(), insert(), remove() 等方法添加、插入或移除元素。数组元素可通过索引修改。
  3. 数组的额外特性和操作:Swift 数组提供多种方法如 sort(), shuffle(), contains() 等。支持遍历数组元素、计算元素数量、检查数组是否为空,并能包含多种数据类型的元素(使用 Any 类型)。

数组是相同类型数据的集合。例如,

假设我们需要记录 5 个学生的年龄。与其创建 5 个单独的变量,不如简单地创建一个数组:

年龄数组

创建 Swift 数组

以下是在 Swift 中创建数组的方法。

// 一个整数类型的数组
var numbers : [Int] = [2, 4, 6, 8]

print("数组: \(numbers)")

输出

数组: [2, 4, 6, 8]

在上述示例中,我们创建了一个名为 numbers 的数组。这里的 [Int] 指定数组只能存储整数数据。

Swift 是一种类型推断语言,即它可以根据数组的值自动识别数组的数据类型。因此,我们可以在不指定数据类型的情况下创建数组。例如,

var numbers = [2, 4, 6, 8]
print("数组: \(numbers)") // [2, 4, 6, 8]

创建空数组

在 Swift 中,我们也可以创建一个空数组。例如,

var value = [Int]()
print(value)

输出

[ ]

在上述示例中,value 是一个空数组,不包含任何元素。

需要注意的是,在创建空数组时,我们必须在方括号 [] 后面指定数据类型,然后跟一个初始化语法 ()。这里的 [Int]() 指定空数组只能存储整数数据元素。

注意:在 Swift 中,我们可以创建任何数据类型的数组,如 IntString 等。

访问数组元素

在 Swift 中,数组中的每个元素都与一个数字相关联。这个数字被称为数组索引。

我们可以使用索引号 (0, 1, 2 ) 访问数组的元素。例如,

var languages = ["Swift", "Java", "C++"]

// 访问索引 0 处的元素
print(languages[0]) // Swift

// 访问索引 2 处的元素
print(languages[2]) // C++

在上述示例中,我们创建了一个名为 languages 的数组。

数组索引如何工作

在这里,我们可以看到每个数组元素都与索引号相关联。我们使用索引号访问了元素。

注意:数组索引总是从 0 开始。因此,数组的第一个元素位于索引 0,而不是 1

向数组添加元素

Swift 数组提供了不同的方法来向数组添加元素。

1. 使用 append()

append() 方法在数组末尾添加一个元素。例如,

var numbers = [21, 34, 54, 12]

print("添加前: \(numbers)")

// 使用 append 方法
numbers.append(32)

print("添加后: \(numbers)")

输出

添加前: [21, 34, 54, 12]
添加后: [21, 34, 54, 12, 32]

在上述示例中,我们创建了一个名为 numbers 的数组。注意这一行,

numbers.append(32)

这里,append() 在数组末尾添加了 32

我们也可以使用 append() 方法将一个数组的所有元素添加到另一个数组中。例如,

var primeNumbers = [2, 3, 5]
print("数组1: \(primeNumbers)")

var evenNumbers = [4, 6, 8]
print("数组2: \(evenNumbers)")

// 合并两个数组
primeNumbers.append(contentsOf: evenNumbers)

print("合并后的数组: \(primeNumbers)")

输出

数组1: [2, 3, 5]
数组2: [4, 6, 8]
合并后的数组: [2, 3, 5, 4, 6, 8]

在上述示例中,我们有两个数组,名为 primeNumbersevenNumbers。请注意以下语句,

primeNumbers.append(contentsOf: evenNumbers)

这里,我们将 evenNumbers 的所有元素添加到 primeNumbers 中。

注意: 如果我们想要将一个数组的所有元素添加到另一个数组中,我们必须使用 contentOfappend() 一起。

2. 使用 insert()

insert() 方法用于在数组的指定位置添加元素。例如,

var numbers = [21, 34, 54, 12]

print("插入前: \(numbers)")

numbers.insert(32, at: 1)

print("插入后: \(numbers)")

输出

插入前: [21, 34, 54, 12]
插入后: [21, 32, 34, 54, 12]

这里,numbers.insert(32, at:1)索引 1 的位置添加了 32

修改数组元素

我们可以使用数组索引来修改数组元素。例如,

var dailyActivities = ["吃饭","重复"]
print("初始数组: \(dailyActivities)")

// 更改索引 1 处的元素
dailyActivities[1] = "睡觉"

print("更新后的数组: \(dailyActivities)")

输出

初始数组: ["吃饭", "重复"]
更新后的数组: ["吃饭", "睡觉"]

这里,最初索引 1 的值是 重复。然后我们使用

dailyActivities[1] = "睡觉"

将值更改为 睡觉

从数组中移除元素

我们可以使用 remove() 方法移除数组中的最后一个元素。例如,

var languages = ["Swift","Java","Python"]

print("初始数组: \(languages)")

// 移除索引 1 处的元素
let removedValue = languages.remove(at: 1)

print("更新后的数组: \(languages)")
print("移除的值: \(removedValue)")

输出

初始数组: ["Swift", "Java", "Python"]
更新后的数组: ["Swift", "Python"]
移除的值: Java

同样地,我们也可以使用

  • removeFirst() - 移除第一个元素
  • removeLast() - 移除最后一个元素
  • removeAll() - 移除数组中所有元素

其他数组方法

方法描述
sort()对数组元素进行排序
shuffle()改变数组元素的顺序
forEach()为每个元素调用一个函数
contains()在数组中搜索元素
swapAt()交换数组元素的位置
reverse()反转数组元素的顺序

遍历数组

我们可以使用 for 循环 来迭代数组中的元素。例如,

// 一个水果数组
let fruits = ["Apple", "Peach", "Mango"]

// for 循环遍历数组
for fruit in fruits {
print(fruit)
}

输出

Apple
Peach
Mango

查找数组元素的数量

我们可以使用 count 属性来找出数组中有多少个元素。例如,

let evenNumbers = [2,4,6,8]
print("数组: \(evenNumbers)")

// 查找元素的数量
print("总元素数: \(evenNumbers.count)")

输出

数组: [2, 4, 6, 8]
总元素数: 4

检查数组是否为空

isEmpty 属性用于检查数组是否为空。例如,

// 包含元素的数组
let numbers = [21, 33, 59, 17]
print("数字: \(numbers)")

// 检查 numbers 是否为空
var result = numbers.isEmpty
print("numbers 是否为空?: \(result)")

// 不包含元素的数组
let evenNumbers = [Int]()
print("偶数: \(evenNumbers)")

// 检查 evenNumbers 是否为空
result = evenNumbers.isEmpty
print("evenNumbers 是否为空?: \(result)")

输出

数字: [21, 33, 59, 17]
numbers 是否为空?: false
偶数: []
evenNumbers 是否为空?: true

在上述示例中,我们使用了 isEmpty 属性来检查 numbersevenNumbers 数组是否为空。这里,isEmpty 返回

  • true - 如果数组为空
  • false - 如果数组不为空

包含多种数据类型的数组

到目前为止,我们一直在使用包含单一数据类型元素的数组。

然而,在 Swift 中,我们也可以创建可以包含多种数据类型元素的数组。例如,

// 包含字符串和整数数据的数组
var address: [Any] = ["Scranton", 570]

print(address)

输出

["Scranton", 570]

在上述示例中,我们创建了一个名为 address 的数组。

var address: [Any] = ["Scranton", 570]

这里的 [Any] 指出 address 可以包含任何数据类型的元素。在这个例子中,它存储了 StringInteger 数据。