HashMap与HashTable的区别(精简版)

来源:互联网 发布:网络理财排行榜 编辑:程序博客网 时间:2024/06/05 09:03

对于HashMap与HashTable的区别这个老掉牙的问题,虽然平时我们在开始发都把集合用的很溜,但是要让你讲出来或者是说出它的内在原理,很多人一脸懵逼。接下来我就通过三个方面简单概括这个问题:

背景:
Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

相同之处:
1.它们都是数据的集合,可以存放多个数据对象;
2.都是由key/value构成;
3.都是hash成员。

不同之处:
1.线程安全性:
hashmap:线程不安全;
hashtable:线程安全。

2.同步(synchronization):
hashmap:非同步。要想线程安全同步,
则需要:Map m = Collections.synchronizeMap(hashMap);
hashtable:同步。

3.速度
hashmap:由于是非同步可允许多线程访问的,所以效率高;
hashtable:由于是同步的单线程资源访问的模式,所以效率低。

4.结构:
hashmap:可以存放null的键值对,去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法;
hashtable:不能存入null的任何数据。

原创粉丝点击