集合和映射
集合是承载元素的容器。映射(map)数据结构就是为此而设计的。映射用来存放键/值对。
前言
集合是承载元素的容器。映射(map)数据结构就是为此而设计的。映射用来存放键/值对。
正文
Set 集合
集合的特点是:元素
不重复
,无下标
。集合的典型应用:
客户统计
、词汇量统计
。二分搜索树
是非常好的实现集合的底层数据结构
。二分搜索树
实现的集合时间复杂度平均为O(log n)
,链表
实现的集合时间复杂度为O(n)
。多重集合
中的元素可以重复
集合分类 集合分类 集合类型特性 底层数据结构的实现 有序集合 元素具有顺序性 基于搜索树的实现 无序集合 元素没有顺序性 基于哈希表的实现 集合的时间复杂度
(h 表示树的高度)操作 链表实现的集合 二分搜索树实现的集合 二分搜索树平均 增 add O(n) O(h) O(log n) 查 contains O(n) O(h) O(log n) 删 remove O(n) O(h) O(log n)
Map 映射
映射主要是一对一间的对应关系。存储(键,值)数据对的数据结构(Key, Value), 根据键(Key),寻找值(Value)。在其他语言中有着其他名称,如 Python 的字典 dict。
二分搜索树
是非常好的实现映射的底层数据结构
。映射集合
中的键可以重复
映射分类 映射分类 映射类型特性 底层数据结构的实现 有序映射 键具有顺序性 基于搜索树的实现 无序映射 键没有顺序性 基于哈希表的实现 映射的时间复杂度
(h 表示树的高度)操作 链表实现的映射 二分搜索树实现的映射 二分搜索树平均 二分搜索树最差 增 add O(n) O(h) O(log n) O(n) 查 contains O(n) O(h) O(log n) O(n) 改 set O(n) O(h) O(log n) O(n) 查 get O(n) O(h) O(log n) O(n) 查 contains O(n) O(h) O(log n) O(n)
Set 集合与 Map 映射间的关系
- 其实集合与映射两者很大程度是相同的。如果将映射的值 Value 统一设置 NULL,在这样看来映射也可以包装成集合。