加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift开篇004->集合

发布时间:2020-12-14 06:57:44 所属栏目:百科 来源:网络整理
导读:PART_O 集合简介 集合长度默认可变,若分配成常量,则其大小和内容皆不可变 Swift集合类型(必须通过泛型明确存储值) Arrays :数组,有序可重复 Sets :集合,无序不重复 Dictionaries :字典,无序键值对 PART_A Arrays 定义(等价,推荐第二种方式) ArrayT

PART_O 集合简介

  • 集合长度默认可变,若分配成常量,则其大小和内容皆不可变

  • Swift集合类型(必须通过泛型明确存储值)

    • Arrays:数组,有序可重复

    • Sets:集合,无序不重复

    • Dictionaries:字典,无序键值对


PART_A Arrays

  1. 定义(等价,推荐第二种方式)

    • Array<T>

    • [T]

  2. 创建空数组

    • 特定类型空数组:var arr = [String]()

    • 已定义好类型的常量或变量,可用空数组语句创建空数组:arr = [],仍为String类型

  3. 创建带默认值的数组:var arr = [Double](count: 3,repeatedValue: 0.0)

    • 此时结果:arr = [0.0,0.0,0.0]

    • count:默认数组长度

    • repeatedValue:默认值

  4. 通过数组相加创建数组:var doubleArr = arr + arr

    • 此时结果:doubleArr = [0.0,0.0]
  5. 通过字面量构造数组:[value1,value2,...]

    • var arr: [String] = ["fuck","me"]

    • 由类型推断可简写:var arr = ["fuck","me"]

  6. 访问和修改数组

    • count:获取数组长度

    • isEmpty:判空

    • append:在数组后添加新数据项

    • +=:在数组后添加一或多个相同类型的数据项

    • arr[index]:通过下标获取指定索引位置的值

    • 数组的索引从0开始

    • arr[1 ... 3] = ["fuck","me"]:通过区间修改一系列数据值,即使数量不同

    • insert(_,atIndex: ):向指定索引位置插入数据项

    • removeAtIndex(index):删除指定索引位置的值

    • removeLast():删除最后一项数据值,避免通过 count 获取数组长度

  7. 遍历:for - in

    • 普通遍历

    • 同时获取数据项的值和索引:for (index,value) in arr.enumerate()


PART_B Sets

只有可以哈希化的类型才可存储在集合中

哈希值是Int类型

相等的对象哈希值必须相同,若 a == ba.hashValue == b.hashValue

基本类型默认皆可哈希化,可做集合的值类型或字典的键类型

  1. 定义(方式唯一)

    • Set<T>
  2. 创建空集合

    • var letters = Set<Character>()

    • letters = []:此时 letters 为空 Set,其类型仍为 Set<Charater>

  3. 用数组字面量创建集合

    • var words: Set<String> = ["fuck","me"]

    • 或者简写,省略Set的具体类型:var words: Set = ["fuck","me"]

  4. 访问和修改集合

    • count:获取集合中元素的数量

    • isEmpty:判空

    • insert:添加新元素

    • remove:删除并返回元素值,若集合为空,返回 nil

    • removeAll:删除所有元素

    • contains(value):检查集合是否包含 value

  5. 遍历:for - in

    • 普通遍历(无序)

    • 有序遍历:for num in nums.sort()

  6. 集合操作(皆创建新集合)

    • 基本操作

      • a.intersect(b):交集

      • a.exclusiveOr(b):除交集

      • a.union(b):并集

      • a.subtract(b):a减去a与b的交集

    • 集合成员关系

      • a.isSubsetOf(b):a是否被包含于b

      • a.isSupersetOf(b):a包含于b

      • a.isStrictSubsetOf(b) / isStrictSupersetOf:a是否被包含于b

      • a.isSubsetOf(b):a是否被包含于b


PART_C Dictionaries

存储多个相同类型的值

键唯一,值不唯一

无序

  1. 定义

    • Dictionary<key,value>
  2. 创建空字典

    • var persons = [String: Int]()

    • persons = [:]:此时 persons 为空 Dictionary,其类型仍为 [String: Int]

  3. 用字典字面量创建字典

    • var persons: [String: Int] = ["zhangsan": 12,"lisi": 17]

    • 简写:var persons = ["zhangsan": 12,"lisi": 17]

  4. 访问和修改字典

    • count:获取字典数据项的数量

    • isEmpty:判空

    • persons["zhangsan"]:通过下标分配新值或者修改指定键位对应的值,空时返回 nil

    • persons.updateValue(_,forKey:):同上

    • persons["zhangsan"] = nil:移除指定键值对

    • persons.removeValueForKey(_):移除并返回值,若空返回 nil

  5. 遍历:for - in

    • 键值遍历:for (key,value) in persons

    • 仅键遍历:for key in persons.keys

    • 仅值遍历:for value in person.value

  6. 通过键集合或值集合构造数组

    • var keyArr = [String](persons.keys)

    • var valueArr = [Int](persons.values)

  7. 因字典是无序的,可用 sort() 对字典的键或值排序


以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读