Map HashMap HashTable Set HashSet

来源:互联网 发布:手机音乐制作软件 编辑:程序博客网 时间:2024/05/17 04:15

一.HashMap和HashTable都实现了Map接口,保存的是Key-value。HashSet实现了Set接口。

二.HashMap和HashTable继承的父类不同,HashMap继承的父类是AbstractMap,而HashTable继承的父类是Dictionary类,但是都实现了Map接口。

三.HashMap不是线程Synchronize,HashTable是线程同步的。

四.HashMap去掉了Contains方法,而是采用containsValue和containsKey

    Hash保留这三个方法

五.HashTable不允许出现key value为空值,HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,可能是 HashMap中没有该键,也可能使该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。

六.Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。

七.哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

八.

Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。

HashMap中hash数组的默认大小是16,而且一定是2的指数。

 

0 0
原创粉丝点击