PART_O 集合简介
集合长度默认可变,若分配成常量,则其大小和内容皆不可变
-
Swift集合类型(必须通过泛型明确存储值)
Arrays:数组,有序可重复Sets:集合,无序不重复Dictionaries:字典,无序键值对
PART_A Arrays
-
定义(等价,推荐第二种方式)
Array<T>[T]
-
创建空数组
特定类型空数组:
var arr = [String]()已定义好类型的常量或变量,可用空数组语句创建空数组:
arr = [],仍为String类型
-
创建带默认值的数组:
var arr = [Double](count: 3,repeatedValue: 0.0)此时结果:
arr = [0.0,0.0,0.0]count:默认数组长度repeatedValue:默认值
-
通过数组相加创建数组:
var doubleArr = arr + arr- 此时结果:
doubleArr = [0.0,0.0]
- 此时结果:
-
通过字面量构造数组:
[value1,value2,...]var arr: [String] = ["fuck","me"]由类型推断可简写:
var arr = ["fuck","me"]
-
访问和修改数组
count:获取数组长度isEmpty:判空append:在数组后添加新数据项+=:在数组后添加一或多个相同类型的数据项arr[index]:通过下标获取指定索引位置的值数组的索引从0开始
arr[1 ... 3] = ["fuck","me"]:通过区间修改一系列数据值,即使数量不同insert(_,atIndex: ):向指定索引位置插入数据项removeAtIndex(index):删除指定索引位置的值removeLast():删除最后一项数据值,避免通过count获取数组长度
-
遍历:
for - in普通遍历
同时获取数据项的值和索引:
for (index,value) in arr.enumerate()
PART_B Sets
只有可以哈希化的类型才可存储在集合中
哈希值是Int类型
相等的对象哈希值必须相同,若
a == b则a.hashValue == b.hashValue基本类型默认皆可哈希化,可做集合的值类型或字典的键类型
-
定义(方式唯一)
Set<T>
-
创建空集合
var letters = Set<Character>()letters = []:此时letters为空Set,其类型仍为Set<Charater>
-
用数组字面量创建集合
var words: Set<String> = ["fuck","me"]或者简写,省略Set的具体类型:
var words: Set = ["fuck","me"]
-
访问和修改集合
count:获取集合中元素的数量isEmpty:判空insert:添加新元素remove:删除并返回元素值,若集合为空,返回nilremoveAll:删除所有元素contains(value):检查集合是否包含value值
-
遍历:
for - in普通遍历(无序)
有序遍历:
for num in nums.sort()
-
集合操作(皆创建新集合)
-
基本操作
a.intersect(b):交集a.exclusiveOr(b):除交集a.union(b):并集a.subtract(b):a减去a与b的交集
-
集合成员关系
a.isSubsetof(b):a是否被包含于ba.isSupersetof(b):a包含于ba.isstrictSubsetof(b) / isstrictSupersetof:a是否被包含于ba.isSubsetof(b):a是否被包含于b
-
PART_C Dictionaries
存储多个相同类型的值
键唯一,值不唯一
无序
-
定义
Dictionary<key,value>
-
创建空字典
var persons = [String: Int]()persons = [:]:此时persons为空Dictionary,其类型仍为[String: Int]
-
用字典字面量创建字典
var persons: [String: Int] = ["zhangsan": 12,"lisi": 17]简写:
var persons = ["zhangsan": 12,"lisi": 17]
-
访问和修改字典
count:获取字典数据项的数量isEmpty:判空persons["zhangsan"]:通过下标分配新值或者修改指定键位对应的值,空时返回nilpersons.updateValue(_,forKey:):同上persons["zhangsan"] = nil:移除指定键值对persons.removeValueForKey(_):移除并返回值,若空返回nil
-
遍历:
for - in键值遍历:
for (key,value) in persons仅键遍历:
for key in persons.keys仅值遍历:
for value in person.value
-
通过键集合或值集合构造数组
var keyArr = [String](persons.keys)var valueArr = [Int](persons.values)
因字典是无序的,可用
sort()对字典的键或值排序
以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com