Swift 中数组 (Array) 是一种有序集合,支持存储相同类型的元素,并提供丰富的操作功能。以下是数组的常用方式和操作示例:
数组的创建
1、空数组
var emptyArray: [Int] = []
let anotherEmptyArray = Array<String>()
2、带默认值的数组
let repeatedArray = Array(repeating: 0, count: 5) // [0, 0, 0, 0, 0]
3、使用字面量
let fruits = ["Apple", "Banana", "Cherry"]
基本操作
1、添加元素
var numbers = [1, 2, 3]
numbers.append(4) // [1, 2, 3, 4]
numbers += [5, 6] // [1, 2, 3, 4, 5, 6]
numbers.insert(0, at: 0) // [0, 1, 2, 3, 4, 5, 6]
2、删除元素
numbers.remove(at: 0) // 移除索引 0 的元素
numbers.removeLast() // 移除最后一个元素
numbers.removeAll() // 清空数组
3、修改元素
var names = ["John", "Jane", "Doe"]
names[1] = "Alice" // 修改指定位置的元素
names[0...1] = ["Bob", "Eve"] // 替换一部分元素
4、访问元素
let first = numbers.first // 获取第一个元素
let last = numbers.last // 获取最后一个元素
let count = numbers.count // 元素总数
遍历数组
1、使用 for-in
for fruit in fruits {
print(fruit)
}
2、使用 enumerated 获取索引和值
for (index, fruit) in fruits.enumerated() {
print("第 \(index + 1) 个水果是 \(fruit)")
}
3、使用高阶函数
fruits.forEach { print($0) }
常用方法
1、判断是否包含元素
if fruits.contains("Banana") {
print("有香蕉")
}
2、查找元素的索引
if let index = fruits.firstIndex(of: "Cherry") {
print("Cherry 的索引是 \(index)")
}
3、排序
var numbers = [3, 1, 2]
numbers.sort() // 原地排序,结果:[1, 2, 3]
let sortedNumbers = numbers.sorted(by: >) // 降序排列,结果:[3, 2, 1]
4、过滤
let filtered = numbers.filter { $0 > 1 } // [2, 3]
5、转换
let doubled = numbers.map { $0 * 2 } // [2, 4, 6]
6、规约
let sum = numbers.reduce(0, +) // 求和,结果:6
切片操作
1、子数组
let subArray = numbers[1...2] // 获取索引 1 到 2 的子数组
2、切片数组转为数组
let array = Array(subArray)
多维数组
let matrix = [[1, 2], [3, 4], [5, 6]]
print(matrix[0][1]) // 访问第一行第二列,结果:2
合并数组
let combined = [1, 2] + [3, 4] // [1, 2, 3, 4]
高级操作
1、移动元素位置
numbers.swapAt(0, 1) // 交换索引 0 和 1 的元素
2、移除重复值
let uniqueNumbers = Array(Set(numbers)) // [1, 2, 3],顺序不定
3、打乱数组
let shuffled = numbers.shuffled()
4、截取前 n 个元素
let topTwo = numbers.prefix(2) // [1, 2]
5、截取后 n 个元素
let lastTwo = numbers.suffix(2) // [2, 3]
示例代码:综合使用
var fruits = ["Apple", "Banana", "Cherry", "Date"]
// 添加和删除
fruits.append("Elderberry")
fruits.remove(at: 1)
// 查找和排序
if let index = fruits.firstIndex(of: "Cherry") {
print("Cherry 的索引是 \(index)")
}
fruits.sort()
// 遍历
fruits.forEach { print($0) }
// 高阶函数
let uppercasedFruits = fruits.map { $0.uppercased() }
print(uppercasedFruits)
数组特性总结
类型安全:数组只能存储一种类型的元素。
值类型:数组是值类型,传递时会进行拷贝。
性能优异:支持 O(1) 的随机访问和高效的插入、删除操作。
数组在 Swift 中是一种灵活且功能强大的数据结构,提供了丰富的功能来满足各种开发需求。