一、数组的创建
- 字面量创建数组
1、创建空数组的时候必须携带类型信息
let array: [String] = []
let array2: [Int] = []
2、如果内容已经提供了类型信息,比如说作为函数的实际参数或者已经分类了的变量或常 量,你可以通过空数组字面量来创建一个空数组
var array = [1, 2, 3, 4, 5]
print(array)
array = []
print(array)
- 初始化器创建数组
两种方式: 1、[类型] () 2、Array<类型>()
let array = [String]()
let array2 = Array<String>()
let number = [Int](0...7)
print(number)
let persons = ["zhangsan": 14, "lisi": 20, "wangwu": 54]
let names = [String](persons.keys)
let ages = [Int](persons.values)
print("names is \(names), ages is \(ages)")
二、数组的操作
let persons = ["zhangsan": 14, "lisi": 20, "wangwu": 54]
let names = [String](persons.keys)
let ages = [Int](persons.values)
print("names is \(names), ages is \(ages)")
for name in names {
print(name)
}
- forEach 方法
- 无法使用 break 或 continue 跳出或者跳过循环
- 使用 return 只能退出当前一次循环的执行体
let numbers = [Int](0...7)
numbers.forEach { (num) in
if num == 3 {
continue
}
print(num * 10)
}
let numbers = [Int](0...7)
for (index, num) in numbers.enumerated() {
print("index is \(index), number is \(numbers)")
}
let numbers = [Int](0...7)
var numInterator = numbers.makeIterator()
while let num = numInterator.next() {
print(num)
}
2、数组的索引
-
startIndex 返回第一个元素的位置,对于数组来说,永远都是 0 -
endIndex 返回最后一个元素索引 +1 的位置,对于数组来说,等同于count -
如果数组为空,startIndex 等于 endIndex
let numbers = [Int](0...7)
for i in numbers.indices {
print(i)
}
1、判断是否包含指定元素
- contains(_: ) 判断数组是否包含给定元素
- contains(where:) 判断数组是否包含符合给定条件的元素
let numbers = [Int](2...7)
print(numbers.contains(4))
print(numbers.contains(where: {$0 < 1}))
2、判断所有元素符合某个条件
- allSatisfy(_: ) 判断数组的每一个元素都符合给定的条件
var array = [10, 20, 45, 30, 98, 101, 30 ,4]
print(array.allSatisfy({$0 > 10}))
print(array.allSatisfy({$0 >= 4}))
3、查找元素
- first 返回数组第一个元素(optional),如果数组为空,返回 nil
- last 返回数组最后一个元素(optional),如果数组为空,返回 nil
- first(where:) 返回数组第一个符合给定条件的元素(optional)
- last(where:) 返回数组最后一个符合给定条件的元素(optional)
var array = [10, 20, 45, 30, 98, 101, 30 ,4]
print(array.first)
print(array.last)
print(array.first(where: { (num) -> Bool in
num > 30
}))
print(array.last(where: { $0 > 100 }))
4、查找索引
- firstIndex(of:) 返回给定的元素在数组中出现的第一个位置(optional)
- lastIndex(of:) 返回给定的元素在数组中出现的最后一个位置(optional)
var array = [10, 20, 45, 30, 98, 101, 30 ,4]
print(array.firstIndex(of: 30) ?? 0)
print(array.lastIndex(of: 30) ?? 0)
print(array.lastIndex(of: 20) ?? 0)
5、查找最大最小元素
- min() 返回数组中最小的元素
- max() 返回数组中最大的元素
- min(by:) 利用给定的方式比较元素并返回数组中的最小元素
- max(by:) 利用给定的方式比较元素并返回数组中的最大元素
var array = [10, 20, 45, 30, 98, 101, 30 ,4]
print(array.min() ?? 0)
print(array.max() ?? 0)
var array = [(45, "error1"), (20, "error2"), (60, "error3")]
print(array.min(by: { (a, b) -> Bool in
a.0 < b.0
}) ?? 0)
print(array.max(by: { (a, b) -> Bool in
a.1 < b.1
}))
添加元素 1、在末尾添加
- append(_: ) 在末尾添加一个元素
- append(contentsOf: ) 在末尾添加多个元素
var numbers = [Int](2...7)
numbers.append(100)
print(numbers)
numbers.append(contentsOf: 101...105)
print(numbers)
2、在任意位置插入
- insert(_:at:) 在指定的位置插入一个元素
- insert(contentsOf: at:) 在指定位置插入多个元素
var numbers = [Int](2...7)
numbers.insert(1, at: 0)
print(numbers)
numbers.insert(contentsOf: -2...0, at: 0)
print(numbers)
3、字符串也是 Collection ,Element 是 Character 类型
var chars: [Character] = ["a", "b", "c"]
chars.insert(contentsOf: "hello", at: 0)
print(chars)
删除元素 1、移除单个元素
- remove(at:) 移除并返回指定位置的一个元素
- removeFirst() 移除并返回数组的第一个元素
- removeLast() 移除并返回数组的最后一个元素
- popLast() 移除并返回数组的最后一个元素(optional),如果数组为空返回nil
var chars: [Character] = ["a", "b", "c", "d"]
chars.remove(at: 1)
print(chars)
chars.removeFirst()
print(chars)
var chars: [Character] = ["a", "b", "c", "d"]
chars.removeLast()
print(chars)
let removedChar = chars.popLast()
print(removedChar)
print(chars)
2、移除多个元素
- removeFirst(: ) 移除数组前面多个元素
- removeLast(: ) 移除数组后面多个元素
- removeSubrange(_: ) 移除数组中给定范围的元素
- removeAll() 移除数组所有元素
- removeAll(keepingCapacity:) 移除数组所有元素,保留数组容量
var chars: [Character] = ["a", "b", "c", "d"]
chars.removeFirst(2)
print(chars)
chars.removeLast(1)
print(chars)
var chars: [Character] = ["a", "b", "c", "d"]
chars.removeSubrange(1...2)
print(chars)
var chars: [Character] = ["a", "b", "c", "d"]
chars.removeAll(keepingCapacity: true)
print(chars)
print(chars.capacity)
|