作者:Aaron Dean,日期:2020.04.28

思维导图:

Q 1:Swift 提供了几种初始集合类型?

Swift 提供了3种初始的集合类型来存储存储值的集合,它们分别是数组(arrays), 集合(sets), 词典(dictionaries)

Q 2:怎么定义一个可变的集合类型?

需要能够改变的集合类型,那就使用 var关键字来创建数组、集合或字典,这时就可以添加、删除或更改其中的项目。如果你需要保证一个集合类型自始至终都是不变的,那么请使用 let 关键字

Q 3:如何创建一个数组?

数组(array)是有序表,存储同一类型的值,数组中的元素值可以相同。记住:数组索引从 0 开始。创建数组的方式如下:

Q 4:如何实现数组的增删改查?

通过数组的方法属性下标语法(subscript syntax)访问(查)和修改(增、删、改等)数组,使用 for – in 循环迭代数组。

  • 访问数组: isEmpty 属性判空, count 属性计数;
  • 在末尾增加元素: append()方法, “+=”运算符。
  • 在特定位置增加元素: insert( )方法。
  • 在特定位置删除元素: remove( )方法。
  • 删除末尾元素:removeLast( )方法。
  • 通过下标语法(下标需有效,即不能越界)访问,增加,修改数组元素。
  • 使用 for – in 循环迭代数组。
  • 使用enumerated()方法输出”索引-值”对。

继续使用前文创建好的数组 nameArray,此时数组值为[“John”, “Bill”, “Will”, “Bob”, “May”]。示例如下:

Q 5:  怎么创建、访问、修改、迭代一个集合?

Q 6: 集合间有哪些运算?

  • 交集: intersection(_:) 方法
  • 并集: union(_:) 方法
  • 对称差:symmetricDifference(_:) 方法
  • 差:subtracting(_:) 方法

Q 7:  集合间有哪些关系?如何判定?

两个集合的关系可能有:相等、子集、真子集、超集、不相交等。判定方法如下:

  • == : 判断两个集合是否相等
  • isSubset(of:)方法 : 判断某个集合是否是另一个集合的子集
  • isSupset(of:)方法 : 判断某个集合是否是另一个集合的超集
  • isStrictSubset(of:)方法 : 判断某个集合是否是另一个集合的真子集
  • isDisjoint(with:)方法 : 判断两个集合是否不相交

Q 8: 怎么创建、访问、修改、迭代一个字典?

字典(dictionary)存储相同类型的键(key)与相同类型的值(value),即键值对(key – value pair)。每个值都对应着一个特殊的键,这个键就作为字典中该值对应的标识符,且键的类型必须遵循 Hashable 协议。这里的字典类型和我们日常使用的字典含义类似。,字典也是一种无序集合类型, 若要以特定顺序遍历字典的键或值,请在其键或值属性上使用 sorted()方法。

如果你需要通过带有Array实例的API使用字典的键或值,请使用keys或values属性初始化一个新数组:


参考资料:Swift – Collection Types

文档协议:CC – BY – 4.0(共享-演绎-署名-不附加限制)