java容器:4、HashMap和HashTable的区别?

HashMap和HashTable的区别?

(1)线程安全
HashTable是线程安全的。HashMap不支持线程的同步,所以不是线程安全的。单线程操作下,就效率而言,HashMap可能高于HashTable。

(2)key值可否为null
HashMap中,允许最多有一个键值为null;但是HashTable不允许。

(3)contains方法
HashTable中有contains方法,类似于containsValue();
HashTable中没有contains方法,而是有containsValue()和containsKey()方法。

(4)初始容量和扩容方式

HashMap的初始容量为16,且容量必须是2的整数次幂,扩容时扩为原来的2倍;
HashTable的初始容量为11,扩容时扩为原来的2倍+1。

(4)选择与使用
如果不需要线程安全,那么使用HashMap,如果需要线程安全,那么使用ConcurrentHashMap,ConcurrentHashMap不但是线程安全的,效率也比HashTable要高,HashTable已经几乎被淘汰了。

发布了57 篇原创文章 · 获赞 13 · 访问量 1118

猜你喜欢

转载自blog.csdn.net/weixin_42924812/article/details/105054181