Swift3.0学习--数组和字典

数组

  • 定义
1
2
let array = ["小明","中花","大杨"] //不可变
var arrayM = ["小","中","大"] //可变
  • 遍历

    • 下标遍历

      1
      2
      3
      4
      5
      for i in 0..<array.count {
      print(array[i]) //输出:小明
      // 中花
      // 大杨
      }
    • 直接内容遍历

      1
      2
      3
      4
      5
      for s in array {
      print(s) //输出:小明
      // 中花
      // 大杨
      }
    • enum block遍历下标和内容

      1
      2
      3
      4
      5
      for e in array.enumerated() {
      print("\(e.offset) \(e.element)") //输出:0 小明
      // 1 中花
      // 2 大杨
      }
    • 遍历下标和内容方式二

      1
      2
      3
      4
      5
      for(n, s) in array.enumerated() {
      print("\(n) \(s)") //输出:0 小明
      // 1 中花
      // 2 大杨
      }
    • 反序

      1
      2
      3
      4
      5
      for s in array.reversed() {
      print(s) //输出:大杨
      // 中花
      // 小明
      }
    • 反序索引和内容

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      //错的
      for (n, s) in array.reversed().enumerated() {
      print("\(n) \(s)") //输出:0 大杨
      // 1 中花
      // 2 小明
      }
      //对的
      for (n, s) in array.enumerated().reversed() {
      print("\(n) \(s)") //输出:2 大杨
      // 1 中花
      // 0 小明
      }
  • 1
    2
    3
    var arrayM = ["小","中","大"] //可变
    arrayM.append("超大")
    print(arrayM); //输出: ["小", "中", "大", "超大"]
1
2
3
4
5
6
var arrayM = ["小","中","大"] //可变
arrayM.remove(at: 1)
print(arrayM); //输出: ["小", "大", "超大"]
arrayM.removeAll(keepingCapacity: true) //删除数据保持容量
print("\(arrayM) 容量\(arrayM.capacity)") //输出: [] 容量6
1
2
3
var arrayM = ["小","中","大"] //可变
arrayM[1] = "很小"
print(arrayM); //输出:["小", "很小", "超大"]
  • 合并
1
2
3
4
let array = ["小明","中花","大杨"] //不可变
var arrayM = ["小","中","大"] //可变
let arr = array + arrayM
print(arr) //输出:["小明", "中花", "大杨", "小", "中", "大"]
  • 容量

数组的容量是个重要的属性,初始化的时候分配capacity,可以提高效率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var arr = [Int]() //初始化没有分配capacity
for i in 0...8{
arr.append(i)
print("\(arr) 容量\(arr.capacity)")
}
//输出:可见内存是2倍增长的
[0] 容量2
[0, 1] 容量2
[0, 1, 2] 容量4
[0, 1, 2, 3] 容量4
[0, 1, 2, 3, 4] 容量8
[0, 1, 2, 3, 4, 5] 容量8
[0, 1, 2, 3, 4, 5, 6] 容量8
[0, 1, 2, 3, 4, 5, 6, 7] 容量8
[0, 1, 2, 3, 4, 5, 6, 7, 8] 容量16

字典

  • 定义
1
2
3
4
5
6
7
8
9
10
11
12
13
//定义普通字典
let dict = ["name" : "Wang", "age" : 18] as [String : Any]//不可变
print(dict) //输出:["name": "Wang", "age": 18]
var dict = ["name" : "Wang", "age" : 18, "sex":"男"] as [String : Any]//可变
print(dict) //输出:["name" : "Wang", "age" : 18, "sex":"男"]
//定义包含字典的数组
let array: [[String: Any]] = [
["name" : "Wang", "age" : 18] as [String : Any],
["name" : "li", "age" : 19] as [String : Any],
["name" : "zhao", "age" : 20] as [String : Any]
]
print(array)
//输出:[["name": "Wang", "age": 18], ["name": "li", "age": 19], ["name": "zhao", "age": 20]]
  • 遍历
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var dict1 = ["name" : "Wang", "age" : 18, "sex":"男"] as [String : Any]
var dict2 = ["name" : "li", "height": 180] as [String : Any]
for e in dict1 {
print("\(e.key)\(e.value)") //输出:nameWang
// age18
// sex男
}
for (key,value) in dict1 {
print("\(key)\(value)")//输出:nameWang
// age18
// sex男
}
1
2
3
var dict = ["name" : "Wang", "age" : 18, "sex":"男"] as [String : Any]
dict["height"] = 190
print(dict) //输出:["name": "Wang", "age": 18, "height": 190, "sex": "男"]
1
2
3
var dict = ["name" : "Wang", "age" : 18, "sex":"男"] as [String : Any]
dict.removeValue(forKey: "name")
print(dict1) //输出:["age": 18, "sex": "男"]
1
2
3
var dict = ["name" : "Wang", "age" : 18, "sex":"男"] as [String : Any]
dict["name"] = "王"
print(dict) //输出:["name": "王", "age": 18, "sex": "男"]
  • 合并
1
2
3
4
5
6
7
var dict1 = ["name" : "Wang", "age" : 18, "sex":"男"] as [String : Any]
var dict2 = ["name" : "li", "height": 180] as [String : Any]
for e in dict2 {
dict1[e.key] = dict2[e.key]
}
print(dict1) //输出:["name": "li", "age": 18, "height": 180, "sex": "男"]
这个人很帅<br>他什么都不想说<br>