HashMap和HashTable之间有什么区别呢?
下文笔者采用表格的方式讲述HashMap和HashTable的区别说明,如下所示
区别 | HashMap | Hashtable |
数据结构 | 数组 + 单链表 + 红黑树 | 数组+链表 |
继承的类 | AbstractMap | Dictonary 但二者都实现了map接口 |
线程安全 | 否 | 是 |
性能搞定 | 高 低,因为需要保证线程安全 | |
默认初始化容量 | 16 | 低 |
扩容方式 | 数组大小×2 | 数组大小×2+1 |
底层数组容量 | 一定为2的整数幂次 | 不要求 |
hash值算法 | (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16) | key.hashCode() |
数组下标计算方法 | (n-1) & hash | hash&0x7FFFFFFF%length |
key-value是否允许null | 是 | 否 |
是否提供contains方法 | 有containsvalue和containsKey方法 | 有contains方法方法 |
遍历方式 | Iterator | Iterator 和 Enumeration |
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。