Hashtable与HashMap的区别(图文详解)

1.HashMap的数据结构:

HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。如下图,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。并允许使用null值和null键。

具体的数据结构图如下图所示,由数组和链表构成。允许使用为null的键和值。

Hashtable与HashMap的区别(图文详解)

 

2.HashTable概述:

和HashMap一样,HashTable也是一个散列表,它存储的内容是键值对映射。HashTable继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。

 

3.区别:

     HashMap不是线程安全的,HashTable是线程安全。

     HashMap允许空(null)的键和值(key),HashTable则不允许。

     HashMap性能优于Hashtable。

   

Map

1.Map是一个以键值对存储的接口。Map下有两个具体的实现,分别是HashMap和HashTable.

2.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable.

3.HashMap允许键或值为空,而HashTable不允许键或值为空.