Swift中的数组
- 创建和访问 Swift 数组:Swift 数组存储相同类型的数据,可以通过索引访问其元素。类型推断允许创建数组而无需明确指定类型,也可以创建空数组。
- 修改和管理数组元素:Swift 数组支持通过
append()
,insert()
,remove()
等方法添加、插入或移除元素。数组元素可通过索引修改。 - 数组的额外特性和操作: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 中,我们可以创建任何数据类型的数组,如 Int
、String
等。
访问数组元素
在 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]
在上述示例中,我们有两个数组,名为 primeNumbers
和 evenNumbers
。请注意以下语句,
primeNumbers.append(contentsOf: evenNumbers)
这里,我们将 evenNumbers
的所有元素添加到 primeNumbers
中。
注意: 如果我们想要将一个数组的所有元素添加到另一个数组中,我们必须使用 contentOf
与 append()
一起。
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
属性来检查 numbers
和 evenNumbers
数组是否为空。这里,isEmpty
返回
true
- 如果数组为空false
- 如果数组不为空
包含多种数据类型的数组
到目前为止,我们一直在使用包含单一数据类型元素的数组。
然而,在 Swift 中,我们也可以创建可以包含多种数据类型元素的数组。例如,
// 包含字符串和整数数据的数组
var address: [Any] = ["Scranton", 570]
print(address)
输出
["Scranton", 570]
在上述示例中,我们创建了一个名为 address
的数组。
var address: [Any] = ["Scranton", 570]
这里的 [Any]
指出 address
可以包含任何数据类型的元素。在这个例子中,它存储了 String
和 Integer
数据。