Java 中 Hashtable 与 HashMap 的异同

在java中,咱们能够知道,Hashtable 与 HashMap 是两个基于散列的集合,用存储对象做为键值对。在平常的开发中咱们常常使用到。看似基本功能都十分的类似,但做为开发者,咱们应该了解关于 Hashtable 与 HashMap 的差别。不然会在一些不一样的场景中出现问题。在看他们差别以前,咱们先了解一下他们的共同点吧。 java

共同点

  • 1.HashMap 与 Hashtable 都是继承于 java.util.Map 接口;
  • 2.HashMap 与 Hashtable 都是基于 hash 的集合以及 hash 的工做原理;
  • 3.HashMap 与 Hashtable 提供高性能的 get 和 set 方法,存取对象;
  • 4.在 Jdk 4 之后 Hashtable 与 HashMap 都属于 java 的集合框架。

差别

  • 1.第一个差别就应该是 HashMap 是线程不安全的; Hashtable 是线程安全的;
  • 2.第二个重要差别是性能,应为 HashMap 不是同步的,因此要比 Hashtable 性能更好;
  • 3.HashTable 不容许 null 值(key和value都不能够),HashMap 容许 null 值(key和value均可以);
  • 4.HashTable 使用Enumeration,HashMap 使用Iterator;
  • 5.HashTable 中 hash 数组默认大小是11,增长的方式是 old*2+1。HashMap 中 hash 数组的默认大小是16,并且必定是2的指数
  • 6.哈希值的使用不一样,HashTable 直接使用对象的 hashCode 而HashMap从新计算hash值,并且用与代替求模
相关文章
相关标签/搜索