Hashtable与HashMap的区别(图文详解)
1.HashMap的数据结构:
HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。如下图,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。并允许使用null值和null键。
具体的数据结构图如下图所示,由数组和链表构成。允许使用为null的键和值。
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不允许键或值为空.