Dictionary(HashMap)的实现
Posted 来晚板面
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dictionary(HashMap)的实现相关的知识,希望对你有一定的参考价值。
什么是哈希表?
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 |
是(用二叉树排序) |
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
以上是关于Dictionary(HashMap)的实现的主要内容,如果未能解决你的问题,请参考以下文章
hashmap,ConcurrentHashMap与hashtable的区别
最详细Java---HashMap 与 Hashtable 的区别?