跟戴铭学iOS编程:理顺核心知识点
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 集合

1.3.1 基本概念

我们来了解一下集合的基本概念。首先集合是泛型的,比如:

let stateArray: Array<String> = ["工作","吃饭","玩游戏","睡觉"]

集合需要具备遍历的功能,通过GeneratorType协议,可以不关注具体元素类型只要不断地用迭代器调next就可以得到全部元素。但是使用迭代器无法进行多次遍历,这时就需要使用Sequence协议来解决这个问题。像集合的forEach、elementsEqual、contains、minElement、maxElement、map、flatMap、filter、reduce等功能都是使用Sequence协议进行多次遍历的。

因为Sequence协议无法确定集合里的位置,所以在Sequence的基础上增加了Indexable协议,Sequence协议加上Indexable协议就是Collection协议。有了Collection协议就可以确定元素的位置了,包括开始位置和结束位置,这样就能够确定哪些元素是已经访问过的,从而避免多次访问同一个元素,并且通过一个给定的位置直接找到对应位置的元素。

以上过程如下图所示。