此文待重构
简介
在计算机科学中,集合是一组可变数量的数据项(也可能是0个)的组合,这些数据项可能共享某些特征,需要以某种操作方式一起进行操作。一般来讲,这些数据项的类型是相同的,或基类相同(若使用的语言支持继承 “继承 (计算机科学)”))。列表(或数组)通常不被认为是集合,因为其大小固定,但事实上它常常在实现中作为某些形式的集合使用。
集合的分类
集合的分类很多。
集合根据底层使用的数据不同,可以进行不同划分。
集合根据存储数据是否具有唯一性,可以分为:
- 重复集合:相同元素的数据可以重复存储
- 不重复集合:相同元素的数据只会存储一次
集合根据存储数据是否具有顺序,可以分为:
- 有序集合:其中的数据具有顺序性(常常基于搜索树实现)
- 无序集合:其中的数据没有顺序性(常常基于哈希表实现)
实现步骤图示
代码实现
链表实现集合
1 | public class LinkedListSet<E extends Comparable<E>> implements Set<E> { |
二叉树实现集合
1 | public class BinarySearchTreeSet<E extends Comparable<E>> implements Set<E> { |
时间复杂度
操作 | LinkedListSet | BSTset | 平均 | 最差 |
---|---|---|---|---|
add | O(n) | O(h) | O(log n) | O(n) |
contains | O(n) | O(h) | O(log n) | O(n) |
remove | O(n) | O(h) | O(log n) | O(n) |
文章信息
时间 | 说明 |
---|---|
2018-12-09 | 初稿 |