Swift 数组

Swift数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。
Swift数组会强制检测元素的类型,如果类型不同则会则会报错,Swift数组应该遵循像Array < Element >这样的形式,气宗Element是这个数组中唯一允许存在的数据类型。

如果创建一个数组,并赋值给一个变量,则创建的集合就是可以修改的。这意味着在创建数组后,可以通过添加、删除、修改的方式改变数组里的项目。如果将一个数组赋值给常量,数组就不可更改,并且数组的大小和内容都不可以修改。

注意: 数组初始化时定义了元素类型后,在后续使用中,元素类型必须是统一的。但如果定义了类型为『Any』,或『AnyObject』时,则数组中可以使用任意类型的元素,同时『Any』类型时,还可以包含方法selector类。

一、创建数组

  • 1、使用构造语法来创建一个由特定数据类型构成的空数组:
var someArray = [SomeType]()
  • 2、创建一个初始化大小数组的语法
var someArray = [SomeType](repeating: InitialValue, count: NumbeOfElements)
  • 3、数组的初始化
let arrayTmp01 = Array<String>()  
let arrayTmp02 = [String]()  
let arrayTmp03:Array<String> = []  
let arrayTmp04:[String] = []  
  • 3、例子
let someInts01 = [Int](repeating: 0, count: 3)
print(someInts01)
let someInts02:[Int] = [10, 20, 30]
print(someInts02)

输出:

[0, 0, 0]
[10, 20, 30]

二、数组操作

1、访问数组

可以根据数组的索引来访问数组的元素,语法如下:

var someVar = someArray[index]

index 索引从 0 开始,即索引 0 对应第一个元素,索引 1 对应第二个元素,以此类推。

let array01:[Int] = [1,2,3,4,5]
// 第一个元素
let item01 = array01.first
print(item01)

// 最后一个元素
let item02 = array01.last
print(item02)

// 获取下标未0的元素
let value01 = array01[0]
print(value01)

//查找元素为1的下标
let value02 = array01.index(of: 1)
print(value02)

输出

Optional(1)
Optional(5)
1
Optional(0)

2、数组遍历

let array = ["1", "2", "3", "4"]
for value in array {
    print("value = \(value)")
}
for i in 0..<array.count {
    print(array[i])
}
for (index, value) in array.enumerated() {
    print("index = \(index), value = \(value)")
}

输出:

value = 1
value = 2
value = 3
value = 4
1
2
3
4
index = 0, value = 1
index = 1, value = 2
index = 2, value = 3
index = 3, value = 4

3、添加元素

var array = [1, 2, 3]
// 添加单个元素
array.append(4)
print(array)
//添加元素数组
array = array05 + [5, 6, 7] //
print(array)
//添加元素集合
array.append(contentsOf: [8,9])
print(array)
array.append(contentsOf: 10...15) // 元素序列
print(array)
// 添加元素(添加到指定位置)
array.insert(0, at: 0)
print(array)

输出:

[1, 2, 3, 4]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

4、删除元素

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 删除首个元素
array.removeFirst()
print(array)
// 删除尾部元素
array.removeLast()
print(array)
// 删除指定下标元素
array.remove(at: 0)
print(array)
// 保持数组容量
array.removeAll(keepingCapacity: true)
print(array.capacity)
// 删除所有元素
array.removeAll()
print(array)

输出:

[2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8]
[3, 4, 5, 6, 7, 8]
9
[]

5、修改元素

var array = [0, 2, 3]
array[0] = 1
print(array)

输出:

[1, 2, 3]

6、数组元素个数

let array = [1, 2, 3]
// 数组元素个数
let count = array.count
print(count)

输出:

3

7、isEmpty 属性

let array01 = [1, 2, 3]
// 判断数组是否为空
let isValid01 = array01.isEmpty
print(isValid01)
let array02 = [Int]()
let isValid02 = array02.isEmpty
print(isValid02)

输出:

false
true

8、数组是否包含某个元素

let array = [1, 2, 3]
// 是否包含某个元素
let contant: Bool = array.contains(1)
print("array \(contant) 包含 1")

输出:

array true 包含 1

9、数组转字符串

let array = ["1", "2", "3", "4", "5", "6", "7"]
let stringMark: String = "_";
let string = array.joined(separator: stringMark)
print("数组转字符串:\(string)")
let arrayString = string.components(separatedBy: stringMark)
print("字符串转数组:\(arrayString)")

输出:

数组转字符串:1_2_3_4_5_6_7
字符串转数组:["1", "2", "3", "4", "5", "6", "7"]

10、数组排序

let array = [1, 2, 3, 5, 7, 9, 0, 4, 6, 8]
// 数组排序(注意:$0, $1(从0开始,表示第i个参数...))
let arraySort01 = array.sorted { (n1, n2) -> Bool in
    //从小到大
    //return n1 > n2
    //从大到小
    return n1 < n2
}
print(arraySort01)

let arraySort02 = array.sorted(by: {
    // 从小到大
    // return $0 > $1
    // 从大到小
    return $0 < $1
})
print(arraySort02)

let arraySort03 = array.sorted(){
    // 从小到大
    // $0 > $1
    // 从大到小
    $0 < $1
}
print(arraySort03)

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

11、数组的批量操作

// 数组批量操作
var arrayBatch01 = [1,2,3,4,5]
print("1 批量修改:\(arrayBatch01)")
arrayBatch01[1...2] = [8,8]
print("2 批量修改:\(arrayBatch01)")
arrayBatch01.replaceSubrange(Range(uncheckedBounds: (3, 4)), with: [10, 10])
print("3 批量修改:\(arrayBatch01)")

输出:

1 批量修改:[1, 2, 3, 4, 5]
2 批量修改:[1, 8, 8, 4, 5]
3 批量修改:[1, 8, 8, 10, 10, 5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoxiaobukuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值