标签:
什么是哈希表?
Data Structure |
Add |
Find |
Delete |
GetByIndex |
Array (T[]) |
O(n) |
O(n) |
O(n) |
O(1) |
Linked list (LinkedList<T>) |
O(1) |
O(n) |
O(n) |
O(n) |
Resizable array list (List<T>) |
O(1) |
O(n) |
O(n) |
O(1) |
Stack (Stack<T>) |
O(1) |
- |
O(1) |
- |
Queue (Queue<T>) |
O(1) |
- |
O(1) |
- |
Hash table (Dictionary<K,T>) |
O(1) |
O(1) |
O(1) |
- |
Tree-based dictionary (SortedDictionary<K,T>) |
O(log n) |
O(log n) |
O(log n) |
- |
Hash table based set (HashSet<T>) |
O(1) |
O(1) |
O(1) |
- |
Tree based set (SortedSet<T>) |
O(log n) |
O(log n) |
O(log n) |
- |
哈希表的做法其实很简单,就是把key通过一个固定的算法函数即所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。
|
有序否 |
允许元素重复否 |
|
Collection |
否 |
是 |
|
List |
是 |
是 |
|
Set |
AbstractSet |
否 |
否 |
HashSet |
|||
TreeSet |
是(用二叉树排序) |
||
Map |
AbstractMap |
否 |
使用key-value来映射和存储数据,Key必须惟一,value可以重复 |
HashMap |
|||
TreeMap |
是(用二叉树排序) |
标签:
原文地址:http://www.cnblogs.com/wanglao/p/5329438.html