【JAVA基础】hashMap 与 hashtable 的区别

1.相同点:数组

  • 都是实现接口map
  • 都是key-value类型的
  • 都是由数组实现

2.不一样点:安全

  • HashMap是非synchronized,而Hashtable是synchronized(线程安全的一个Collection
  • HashMap能够接受为null的键值(key)和值(value),而Hashtable则不行
  • 继承不一样(hashtable 继承Dictionary 、hashmap 继承AbstractMap )
  • 哈希值的使用不一样,HashTable直接使用对象的hashCode。而HashMap从新计算hash值。
  • 数组默认大小不同 hashMap(16)增长的方式是 2的指数 ---- hashtable(11)增长的方式是 old*2+1
  • 计算hash的方法不一样:Hashtable计算hash是直接使用key的hashcode对table数组的长度直接进行取模;HashMap计算hash对key的hashcode进行了二次hash,以得到更好的散列值,而后对table数组长度取摸
相关文章
相关标签/搜索