为了账号安全,请及时绑定邮箱和手机立即绑定

hashMap与hashTable的区别

标签:
Java

    首先请先阅读这两个的源码。

一、hashMap、hashTable都是Map接口的实现类,但是hashMap类继承自抽象类abstractMap类,hashTable继承自

Dictionary类,该类在jdk中这样描述:


可见该类已经过时。

二、hashTable里面的方法都是同步的,实现同步的方法是synchronized,hashMap是非同步的,但也可以使用Collections

类中的静态方法使其变得同步。因此在单线程程序中hashMap的效率要高于hashTable,如果在多线程程序中,可以考虑使用

hashTable

三、hashTable不允许有null的键和值,hashMap允许有空的键和值

四、hashMap的遍历是使用方法keySet()返回一个保存有所有键的Set视图,然后用迭代器进行遍历,采用的是fail-fast机制。

hashTable的遍历可以使用elements()返回值的枚举,也可以使用entrySet()keySet()values()返回键的Collection视图,

也可以使用keys()返回键的枚举。总之使用迭代器遍历的都是fail-fast机制,用枚举遍历就不是了,尽量还是得使用迭代器。

import java.util.Enumeration;import java.util.Hashtable;public class Test implements Cloneable {		public static void main(String[] args) {		Hashtable<String,String> ht = new Hashtable<>();		ht.put("a", "1");		ht.put("b", "2");		ht.put("c", "3");		Enumeration<String> e = ht.keys();		while(e.hasMoreElements()) {			ht.remove("b");			System.out.println(ht.get(e.nextElement()));		}	}}

结果:

null13


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消