HashMap与HashTable的区别

1.HashMap是实现Java1.2引进的Map接口,而HashTable是继承自一个老旧类(Dictionary类);

2.HashMap方法不是同步的,要想实现同步必须给它添加一个外同步,而HashTable的方法是同步的,多个线程同时访问时,不需要为它的方法实现同步;

3.HashMap是非同步的,也是非线程安全的,它利用Collection类的静态方法Conllection.synchronizedMap()方法--同步包装器,创建一个线程安全的Map对象,并把它作为一个封装的对象来返回,这个方法有时也被称作有条件的线程安全——所有 单个的操作都是线程安全的,但是多个操作组成的操作序列却可能导致数据争用,因为在操作序列中控制流取决于前面操作的结果。因此,HashMap的效率较高(因为线程的安全是以牺牲性能而来的,为了保证线程的安全就需要通过不断加锁解锁来保证);

4.HashMap中去掉了HashTable中的contains()方法,加上了containsKey()和containsValue()方法;

5.HashMap是键值对的数据存储,它允许空键值,但是只允许只有一个键的时候为空,允许无数个值为空,而HashTable是表的数据存储,它不允许空。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容