知识卡片

数组字典集合的三向权衡

专业/工作 · 745

内容

Swift三种基础容器在”是否有序”和”元素是否唯一”两个维度上分别占据不同位置:数组有序、允许重复,靠位置存取;字典无序、键唯一,靠键值对存取;集合无序、元素本身唯一,靠元素直接存取。集合可以理解成”只有键、没有值”的字典——同样要求元素满足[[字典键必须可散列]]的Hashable约束,换取按元素直接判断”存在与否”(contains)以及并集union、交集intersection、不相交判断isDisjoint这类集合论操作的原生支持。发散:选择容器不该只看”能不能装数据”,而要先问业务真正关心的是顺序、去重,还是关联查找——三选一的取舍在设计阶段就该想清楚,而不是选了数组之后再手写去重逻辑。

参考来源

《Swift编程权威指南》第11章《集合》