数组 Array
- 数组的创建
-
- OC 中使用 @[] 定义数组, Swift 中使用 [] 定义数组
- [类型] 表示数组中存放的都是该类型的元素
- Swift 中数组中的元素可以是基本数据类型
// 创建数组 var array1: Array<Int> vararray2:Array<Int> = [2,3] var array3: [Int] var array33 = [Int]() array1 = Array(arrayLiteral: 1, 2, 3, 4) var array4 = Array(repeatElement("A", count: 10)) vararray44 = Array(repeating:0.0, count:3 ) // 创建空数组 var array5: Array<Int> = [] var array6: [Int] = Array() // 如果数据中的类型不一致, 要指定类型 Array<Any> let array7: Array<Any> = ["1", 1, p]
- 数组的遍历
// 1. 按照下标遍历 for i in 0..<array.count { print(array[i]) } // 2. for in 遍历 for i in array { print(i) } // 3. enum block 遍历, 同时遍历 下标 和 元素 for i in array.enumerated() { print(i) } // 4. 遍历 下标 和 元素 for (index, element) in array.enumerated() { print("\(index) --- \(element)") } // 5. 反序遍历 for i in array.reversed() { print(i) } for s in array.enumerated().reversed() { print(s) }
- 数组的增 删 改 合并
// OC 中数组分 可变 NSMutableArray() / 不可变 NSArray() // Swift 中数组 可变 var / 不可变 let var arr = ["1", "2", "3"] // 追加元素 arr.append("0") // 修改, 通过下标定位 arr[0] = "AAA" // 数组越界 --- Index out of range // array[5] = "XXX" // 删除 arr.remove(at: 3) // 删除全部, 并且保留空间 arr.removeAll(keepingCapacity: true) // 数组合并 var arr1 = ["3", "11", "2"] var arr2 = ["AAA","CCC","BB","FFF"] // 注意: 要合并数组的两个类型必须一致 arr1 += arr2
- 数组的排序
// 数组排序 var array1 = Array(arrayLiteral: 1, 2, 3, 4) // 数组排序 默认是 升序排列 array1.sort() // 降序排列 array1.sort(by: >) // 升序排列 array1.sort(by: <)
字典 Dictionary
- OC 定义字典 @{}, Swift 定义字典 [key : value]
// 字典的声明和创建 var dic1: Dictionary<Int, String> var dic2: [Int:String] var dic3 = Dictionary(dictionaryLiteral:(1,"1"), (2,"2")) var dic4 = [1:"1”, 2:"2"] var dic5 = [Int : String]()
- 字典的增 删 改
var dict: [String : Any] = ["name" : "张", "age" : 18] // 字典中的新增与修改是通过 KEY 取值: 如果 KEY 存在, 则表示修改; 如果 KEY 不存在, 则表示新增 // 新增 dict["title"] = "AAA" // 修改 dict["name"] = "李" dict.updateValue("00000000", forKey: "name") dict.updateValue("ppp", forKey:"xxx") // 删除: 如果存在 对应的 Key, 则删除; 如果不在 对应的 Key, 则不进行操作 dict.removeValue(forKey: "age") print(dict) dict.removeValue(forKey: "age") print(dict)
- 字典的遍历
let dict1: [String : Any] = ["name" : "张", "age" : 18, "title" : "名称"] for e in dict1 { print(e) } for (key, value) in dict1 { print("\(key) --- \(value)") } // 合并 var dict3: [String : Any] = ["name" : "张", "age" : 18, "title" : "名称"] let dict4: [String:Any] = ["name":"李","height":1.8] // 遍历, 并依次设置 for (key, value) in dict4 { dict3[key] = value }
集合 Set
- Set 的创建
// 创建集合 var set1: Set<Int> = [1, 2, 3, 4] var set2:Set<String> = Set(arrayLiteral:"1","2","3") var set3 = Set(arrayLiteral:1,2,3) var set4: Set<Int> = []
- 集合的常用操作
// 获取其中元素个数 set1.count // 判断集合是否为空集合 if set1.isEmpty { print("集合为空") } // 判断集合中是否包含某个元素 if set1.contains(2) { print("集合中包含此元素") } // 插入 set1.insert(5) // 获取指定位置的下标 var setIndex = set1.index(of: 4) //移除指定下标的元素 set1.remove(at: setIndex!) // 移除指定元素 set1.remove(1)
- 集合的数学运算
var setN: Set<Int> = [1, 2, 3, 4, 5, 6] varsetM:Set<Int> = [4, 5, 6, 7, 8] // 进行 intersection 运算:取两个集合的交集 var setInter = setN.intersection(setM) // 进行 symmertricDifference 取两个集合不相同的部分 var setDif = setN.symmetricDifference(setM) // 进行 集合的 union 运算,并集 var setUni = setN.union(setM) // 进行集合的 subtracting 运算:用一个集合去截取另一个集合 var setSub = setN.subtracting(setM) setN == setM var setSub1: Set<Int> = [1, 2, 3] // 判断是否是子集或者父集 setSub1.isSubset(of: setN) setN.isSuperset(of:setSub1) // 判断是否是真子集或者真父集 setSub1.isStrictSubset(of: setN) setN.isStrictSuperset(of: setSub1)
- 集合的遍历
var setSub1: Set<Int> = [1, 2, 3] for item in setSub1 { print(item) } for item in setSub1.enumerated() { print(item) } for (index, item) in setSub1.enumerated() { print("\(index) : \(item)") } for index in setSub1.indices { print(setSub1[index]) }