//let array = [] //如果直接这样创建一个空数组,程序会报错
//需要携带类型信息
let array: [String] = []
let array2: [Int] = []
2、如果内容已经提供了类型信息,比如说作为函数的实际参数或者已经分类了的变量或常
量,你可以通过空数组字面量来创建一个空数组
var array = [1, 2, 3, 4, 5]
print(array)
//将 array 赋值为空数组,此时程序不会报错,显示的还是之前 Int 类型的数组
array = []
print(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)
}
let numbers = [Int](0...7)
numbers.forEach { (num) in
if num == 3 {
continue //此时报错,显示 break 或者 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() { //如果 numInterator.next() 有值,就将他的值赋给 num 变量
print(num)
}
2、数组的索引
startIndex 返回第一个元素的位置,对于数组来说,永远都是 0
endIndex 返回最后一个元素索引 +1 的位置,对于数组来说,等同于count
如果数组为空,startIndex 等于 endIndex
let numbers = [Int](0...7)
for i in numbers.indices {
print(i)
}
1、判断是否包含指定元素
let numbers = [Int](2...7)
print(numbers.contains(4)) // true
print(numbers.contains(where: {$0 < 1})) // false
2、判断所有元素符合某个条件
var array = [10, 20, 45, 30, 98, 101, 30 ,4]
print(array.allSatisfy({$0 > 10})) // false
print(array.allSatisfy({$0 >= 4})) // true
3、查找元素
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、查找索引
var array = [10, 20, 45, 30, 98, 101, 30 ,4]
print(array.firstIndex(of: 30) ?? 0) //输出结果: Optional(3)
print(array.lastIndex(of: 30) ?? 0) //输出结果: Optional(6)
print(array.lastIndex(of: 20) ?? 0) //输出结果: Optional(1)
5、查找最大最小元素
var array = [10, 20, 45, 30, 98, 101, 30 ,4]
print(array.min() ?? 0) //输出结果: Optional(4)
print(array.max() ?? 0) //输出结果: Optional(101)
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、在末尾添加
var numbers = [Int](2...7)
numbers.append(100)
print(numbers)
numbers.append(contentsOf: 101...105)
print(numbers)
2、在任意位置插入
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) //输出结果: ["h", "e", "l", "l", "o", "a", "b", "c"]
删除元素
1、移除单个元素
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) // 输出: Optional("d")
print(chars) //输出: ["a", "b"]
2、移除多个元素
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()
chars.removeAll(keepingCapacity: true) //输出的容量是 4
print(chars) //输出: []
print(chars.capacity) //输出: 0,容量是 0