首页 > 代码库 > 古代和现在的区别Hashtable和HashMap

古代和现在的区别Hashtable和HashMap

Hashtable和HashMap的异同

1 HashMap类出现之前,jdk中存在一个和他同样采用哈希表储存方式,同样实现键值映射的集合类Hashtable。两个实现原理相同,功能相同,很多情况可以互用。

Hashtable和HashMap的区别如下

1 Hashtable继承自Dictionary类,而HaspMap实现了Map接口。

2 Hashtable是线程安全的,占用资源比较多,速度比较慢。而HashMap是线程非非安全的,在多线程中需要手动管理线程同步,他的优点在于速度比较快,不重安全。

Hashtable不许有null值(ke和value)都不允许,HasbMap允许有null值(ke和value)都可以,开发当中最好用HashMap

3 另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。

古代和现在的区别Hashtable和HashMap