Swift3-07 数组

数组是 Swift 三种最基本的数据集合的一种,这三种集合分别是: Array Dictionary set 数组的概念就是一个有序的数据序列,概念很简单,我们已经很熟悉。

初始化方式

var numbers = [0,1,2,3] 
var num:[Int] = [0,1,2] //只能是 Int 类型
var arr = ["a","b","c"] //只能是 字符串
var arr1:[Any] = ["a","b","c",1,num,arr] //里面的元素可以为任意类型

var arr0: Array<String> = ["a","b"]
var arr01 = ["a","b","c",1] as [Any]

//空数组的声明方式
var emptyArr1:[Int] = []
var emptyArr2:Array<Int> = []
var emptyArr3 = [Int]()

//重复数组初始化
var allzZeros = [String](repeatElement("a", count: 4))

基本方法

数组的基本查询 属性方法 count ,isEmpty, first, last, max, min, [], contains, index, for in enumerated, compare

var arr = ["a","b","c"]

arr.count //判断数组长度
arr.isEmpty //判空

arr[1]     //索引数组中第二个元素

//取值
arr.first
arr.last
var fistElement =  arr.first  // 返回的是一个可选型。

//最大最小
arr.max()
arr.min()

//区间
arr[0...2]
arr[0..<2]

//判断是否包含
arr.contains("c")

//获取位置
arr.index(of: "b")
arr.index(of: "add23")

//遍历
for str in arr{
    print(str)
}

for (index, str ) in arr.enumerated(){
    print(index, str)
}

//数组比较
var arr1 = ["a","b","c"]
arr == arr1  //数组比较。。 

数组的增删改

var arr = ["a","b","c","a","b","c","a","b","c","a","b","c"]

//增加元素
arr.append("d")
arr += ["a"]  // 后面必须跟同数据类型的数组
arr.insert("x", at: 2)  //在某一个位置添加,注意越界问题

//删除元素
arr.removeFirst(2) //删除数组首2个元素
arr.removeLast(3) //删除数组尾部3个元素
arr.remove(at: 2)  //删除第二个元素
arr.removeSubrange(0...1)
arr.removeSubrange(0..<2)
//arr.removeAll()

//修改元素  
arr[0] = "hello" 修改第一个元素 为 "hello"
arr[0...2] = ["a","b","c"] //修改区间中的元素为新元素 
arr[0...2] = ["a"] //修改区间中的元素为新元素 

二维数组 其实就是一维数组中的元素都是一维数组。

var arr:[Array<String>] = [["a"],["a","b"]] //元素必须都是 String
var arrtemp = arr[0]  
var str = arr[0][0]  
var arr01:[Array<Any>] = [["a"],["a","b"],[1,2,3]] //任意元素,使用时需要谨慎。经常会有各种解包问题
var int = arr01[2][1] as! Int

arr.append(["d","e"]) //在二维数组的尾部添加新的数组元素
arr[0].append("b") //给二维数组的第一个数组元素 添加一个String

arr += [["b","d"]]   //+的也需要是二维数组

NSArray NSArray 和 Array 的区别就是 NSArray 是一个类,而 Array 是一个结构

var arr000 = [1, 2, 3, 4] as NSArray
var arr001:NSArray = ["a"]
var arr002:NSArray = [1, 2, "hello'"]  

遗留问题

 var arr000 = [1, 2, 3, 4]
 var arr001 = ["a"]
 var arr002 = [[1],[2],[3],["a"],arr000] as [Any]

 //如何在 arr002 中获取第五个元素,然后解包这个元素。
 var arr = arr002[4]   //对 arr的解包,如何顺利进行。
 //arr[0]  //error

//问题解决

var arr0001 = arr1[5] as! Array<String>
arr0001[1]