一、数组的基本操作
数组元素的基本操作1、数组的定义
Swift中的数组跟OC类似 分为可变数组和不可变数组。数据类型为Array。可变数组用var来修饰 不可变数组用let来修饰。举个例子,我们定义一个含有三个元素的不可变数组,代码如下:
let array:Array = [1,2,3]
print(array)
输出结果为:[1,2,3]
定义一个可变数组,只需要把let变为var 即可
var array:Array = [1,2,3]
print(array)
输出结果为:[1,2,3]
2、数组元素的基本操作
- 增(追加、插入、+)
如果我们想要在数组末尾追加一个元素,需要用到array.append(元素)。
//array 追加
var array1:Array = [1,2,3]
array1.append(4)
print(array1)
输出结果为:[1, 2, 3, 4]
上边的例子给出的是追加相同类型的元素的例子。如果我想在末尾追加一个不同类型的元素,应该怎么操作呢?
我们只需要将 Array类型 变为 [Any] ,这里[Any]代表一个数组,元素可以是任意类型。
//array 追加任意类型
var array2:[Any] = [1,2,3]
array2.append(4.3)
print(array2)
输出结果为:[1, 2, 3, 4.3]
如果我们想要在任意位置添加元素,明显上述的操作就无法满足需求了,这时候我们就用到了array的另一个语法array.insert(element,at:index) 这句话 表示 我们要在array的某个索引添加一个元素。示例如下:
//插入
array2.insert(22, at: 0)
print(array2)
输出结果为:[22, 1, 2, 3, 4.3]
通过上述的两个语法。我们能对一个array进行任意位置的增操作。那如果我们需要对两个array进行操作呢。OC中我们经常用到的是 addObjectFromArray ,在swift中我们可以使用更简单的操作方法 “+” 举个例子:
//"123" + "abc"
let array3 = array2 + [2,3,4]
print(array3)
输出结果为:[22, 1, 2, 3, 4.3, 2, 3, 4]
这里需要注意:swift中对于类型管控非常严格,+方法 要求前后类型一致。也就是说Array的类型必须是相同类型才能相加
- 删
关于删除,在文章开始的思维导图中已经罗列出了,这里简单的以几个例子来演示一下:
删除所有
array.removeAll() //删除所有
array.removeAll(keepingCapacity: YES) //删除所有元素 保留容量空间
删除第一个/最后一个元素
array.removeFirst()//删除第一个元素
array.removeLast()//删除最后一个元素
删除前几个/后几个元素
array = [1,2,3,4,5]
array.removeFirst(2)//删除从前面数2个
print(array)
array.removeLast(2)//删除最后面的两个元素
print(array)
删除区间内元素
array = [1,2,3,4,5]
array.removeSubrange(1...3)//删除 区间1...3的元素
print(array)
数组的其他操作
数组的其他操作1、求数组元素个数 数组容量
//数组个数 容量
var array = [1,2,3]
print(array.count)
print(array.capacity)
输出结果为:3,3
这里定义的是一个含有三个元素的数组。初始容量为三。如果这个数组再增加一个元素。比如我们这样操作:
array.append(4)
print(array.count)
print(array.capacity)
输出结果为:4,6
这里关于容量有这样一个规律 :
if count>capacity {
capacity = 2 * (count - 1)
}
这里简单的用一段伪代码来表示count 和 capacity 之间的关系。如果count的数量 小于出事分配到的容量 容量不会发生改变 当count大于容量时 容量自动扩容为 未添加元素之前的数组容量的2倍。这样做的目的在于尽可能的少占用空间
2、数组遍历
- 遍历索引 拿到元素
//数组遍历 遍历索引
for i in 0..<array.count {
print(array[I])
}
- 遍历元素 拿到元素
//数组遍历 遍历元素 拿到元素
for value in array {
print(value)
}
- 遍历区间 拿到元素
//数组遍历 遍历区间 拿到元素
for value in array[0...4] {
print(value)
}
- 转化为OC 方式遍历 拿到元素和索引
//数组遍历
(array as NSArray).enumerateObjects { (value, idx,stop) in
print(value,idx)
}
- 遍历元组 拿到元素和索引
//数组遍历 遍历元组 拿到索引和值
for (index,value) in array.enumerated(){
print (index,value)
}
3、数组合并
数组合并的话,要注意:只有相同类型的数组才能够合并。
比如我们想让两个数组相加。+ 号左右数组类型要相同
//数组合并
let array1:[Any] = [8,8,8]
let array2:[Any] = [1,2,3]
print(array1 + array2)
输出结果为:[8,8,8,1,2,3]
网友评论