返回

HashMap与HashTable比较总结

发布时间:2022-10-27 02:31:52 273
# java# java

1.继承的类

首先HashTable产生于JDK1.0,HashMap产生于JDK1.2,看类声明:

public class Hashtable<K,V>
extends Dictionary<K,V>
implements Map<K,V>, Cloneable, java.io.Serializable {
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {

其中HashTable多继承了一个Dictionary,但是在Dictionary类注释上有这么一句话,标识其已经废除了,多了一个elements方法,一个contains方法,contains与containsValue方法一样的。

 * NOTE: This class is obsolete.  New implementations should
* implement the Map interface, rather than extending this class.

 

2.键值为null情况

HashTable允许key与value为null的情况,HashTable不允许

 

3.初始化容量与扩容

HashTable初始化容量为11,每次扩容2n+1

HashMap初始化容量为16,每次扩容为原来2倍

如果在创建对象时给定大小,HashTable为指定的大小,HashMap为2的指定的幂次方大小

 

4.线程安全

HashTable为线程安全的,但是已经不推荐使用,要使用用ConcurrentHashMap

HashMap线程不安全

 * Java Collections Framework.  Unlike the new collection
* implementations, {@code Hashtable} is synchronized. If a
* thread-safe implementation is not needed, it is recommended to use
* {@link HashMap} in place of {@code Hashtable}. If a thread-safe
* highly-concurrent implementation is desired, then it is recommended
* to use {@link java.util.concurrent.ConcurrentHashMap} in place of
* {@code Hashtable}.

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

HashMap与HashTable比较总结_java

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
BZOJ 1258([CQOI2007]三角形tri-模拟) 2022-10-27 02:09:20