1. 数组
数组的命名
var TypeArray1 = Array ()
var TypeArray2 = [SomeType] ()
let intArray = [1, 2, 3, 4]
//其中 SomeType是数据类型
数组的访问与查找
let intArray = [1, 2, 3, 4, 5]
print(intArray[1]) //结果 : 2
//数组的访问可以直接通过下标语法实现, 数组的第 i 个元素对应的下表为 i - 1
intArray.isEmpty //判断数组是否为空, 结果 : false
intArray.count //获得数组中元素的数量, 结果 : 5
intArray.contains(3) //判断数组中是否包含 3 这个元素, 结果 : true
数组的编辑与输出
Swift 中, 可以使用 append() 或者 "+ []" 的方法对数组的元素进行增加; 可以使用 insert() 在指定的位置增加某个元素; 可以直接通过下标定位到指定位置直接对元素进行修改
var intArray = [1, 2, 3, 4, 5]
intArray.append(6) //intArray == [1, 2, 3, 4, 5, 6]
intArray += [6] //intArray == [1, 2, 3, 4, 5, 6, 6]
intArray.insert(100, at : 2) //intArray == [1, 2, 100, 3, 4, 5, 6, 6]
intArray[0] = 0 //intArray == [0, 2, 100, 3, 4, 5, 6, 6]
Swift 中, 可以通过一个下标区间 [minNumber ..< maxNumber] 或者 [minNumber ... maxNumber] 对指定元素进行修改
intArray[3…6] = [1, 2, 3, 4] //intArray == [0, 2, 100, 1, 2, 3, 4, 6]
Swift 数组提供了几种 remove 方法用来删除数组中的元素
intArray.removeFirst() //intArray == [2, 100, 1, 2, 3, 4, 6]
intArray.removeLast() //intArray == [2, 100, 1, 2, 3, 4]
intArray.remove(at : 2) //intArray == [2, 100, 2, 3, 4]
intArray.removeSubrange(Range(1 ..< 3))
//intArray == [2, 3, 4]
intArray.removeAll() //intArray == []
Swift 数组在输出的时候, 可以选择部分输出, 部分输出需要具体指出需要输出元素的下标
let intArray = [1, 2, 3]
let emptyArray = Array ()
print(intArray[1]) //结果 : 2
Swift 数组在输出的时候, 也可以选择整体输出
print(intArray) //结果 : [1, 2, 3]
print(emptyArray) //结果 : []
数组的排序
Swift 提供了 sort() 函数对数组进行排序, 默认是升序
var intArray = [11, 22, 3, 14, 25]
intArray.sort() //intArray == [3, 11, 14, 22, 25]
在 sort() 函数中添加相关参数可以实现对数组进行降序排序
intArray.sort(by : >) //intArray == [25, 22, 14, 11, 3]
对于元组数组, 同样也可以用 sort() 函数对数组按照元组中的某一个元素进行排序
var userList = [(name : "Thomas", age : 20), (name : "John", age : 18), (name : "Bill", age : 28)]
userList.sort(by : {$0.name > $1.name})
//对 userList 元组数组按照名字 name 的升序进行排序
//userList == [[(name: "Bill", age: 28), (name: "John", age: 18), (name: "Thomas", age: 20)]]
userList.sort(by : {$0.age < $1.age})
//对 userList 元组数组按照年龄 age 的升序进行排序
//userList == [[(name: "John", age: 18), (name: "Thomas", age: 20), (name: "Bill", age: 28)]]
多维数组 : 在数组中仍然存在其他数组
通过几次索引可以找到存储的相关元素的具体值就为几维数组
多维数组的定义
let TypeArray = [[SomeType]] () //几维数组就有几个 "[]"
let intArray = [[1, 2, 3], [4, 5, 6]]
多维数组的编辑与访问
多维数组与一维数组一样可以通过 append() 函数在多维数组中添加更多数组元素
var numbers = [[1, 2, 3], [1, 2, 3]]
numbers.append([4, 5, 6])
//numbers == [[1, 2, 3], [1, 2, 3], [4, 5, 6]]
多维数组可以通过下标来访问数组或者数组中的元素
var numbers = [[1, 2, 3], [4, 5, 6]]
print(numbers[2]) //结果 : [4, 5, 6]
print(numbers[2][1]) //结果 : 5
通过 for-in 循环对数组遍历
使用 "..<" 对数组遍历
var intArray = [1, 2, 3]
for index in 0..< intArray.cont {
print(index)
}
/*结果 :
1
2
3
*/
不使用 "..<" 对数组遍历
var intArray = [1, 2, 3]
for index in intArray {
print(index)
}
/*结果 :
1
2
3
*/
通过定义范围常量对数组指定范围内的数组元素进行遍历
var intArray = [1, 2, 3, 4, 5, 6]
let range = 3 ..< intArray.count
for index in zip(range, intArray[range]) {
print(index)
}
/*结果 :
4
5
6
*/
对于复杂数组的遍历
let userList = [(name : "Thomas", age : 20), (name : "John", age : 18), (name : "Bill", age : 28)]
for (name, age) in userList {
print(name + " 的年龄是 \(age).")
}
/*结果 :
Thomas 的年龄是 20.
John 的年龄是 18.
Bill 的年龄是 28.
*/
多维数组的遍历
let intArray = [[1, 2, 3], [4, 5, 6]]
for sArray in intArray {
for num in sArray {
print(num)
}
}
/*结果 :
1
2
3
4
5
6
*/
2. 字典
字典的创建
let dictionaryExample = Dictionary <KeyType, ValueType> ()
//KeyType 即键, ValueType 即键对应的存储值. 这里的 KeyType 和 ValueType 为数据类型
let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
字典的读取与编辑
Swift 中, 可以通过下标语法, 通过访问键获得其对应的值
let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
print(diallingCodes["010"]) //结果 : Beijing
通过下标语法还可以往字典中新的元素
var diallingCodes = ["010" : "Beijing", "021" : "Shanghai"]
diallingCodes["020"] = "Guangdong"
//dialingCodes = ["010" : "Beijing", "021" : "Shanghai", "020" :"Guangdong"]
通过下标语法可以直接通过键修改对应的存储值
var diallingCodes = ["010" : "Beijing", "021" : "Shanghai"]
disllingCodes["010"] = "北京"
//diallingCodes = ["010" : "北京", "021" : "Shanghai"]
Swift 中, 也可以通过 updateValue() 函数修改指定键的值
var diallingCodes = ["010" : "Beijing", "021" : "Shanghai"]
diallingCodes.updateValue("北京", forKey : "010")
//diallingCodes = ["010" : "北京", "021" : "Shanghai"]
当需要删除字典中的某个对键值时, 可以使用 removeValueForKey() 的方法, 或者使某个键的值设为 nil
var diallingCodes = ["010" : "Beijing", "021" : "Shanghai"]
diallingCodes.removeValue(forKey : "010")
//diallingCodes = ["020" : "Shanghai"]
diallingCodes["021"] = nil
//diallingCodes = [:]
当字典值为空的时候, 字典的输出 :
let dictionary = Dictionary <String, int> ()
print(dictionary) //结果 : [:]
使用 for-in 循环对字典遍历
对键的遍历
let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
for key in diallingCodes {
print(key)
}
/*结果 :
010
021
0592
*/
对值的遍历
let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
for value in diallingCodes {
print(value)
}
/*结果 :
Beijing
Shanghai
Xiamen
*/
对字典中每一项数据组成的 (key, value) 元组进行遍历
let diallingCodes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
for (key, value) in diallingCodes {
print(key + " : " + value)
}
/*结果 :
021 : Shanghai
010 : Beijing
0592 : Xiamen
*/
自創文章, 原著 : Jonny, 如若需要轉發, 在已經授權的情況下請註明出處 :《Swift 第四课 : 数组和字典》https://jonny.vip/2017/07/19/swift-%e7%ac%ac%e5%9b%9b%e8%af%be-%e6%95%b0%e7%bb%84%e5%92%8c%e5%ad%97%e5%85%b8/
Leave a Reply