Hasttable与HashMap的区别

Hashtable和HashMap的区别
1.Hashtable是Dictionary(抽象类,如下:)的子类,HashMap是Map接口的一个实现类;
2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。同步是有代价的,而Hashtable的同步机制是无法在不需要的时候关闭掉的,因此编程中出于性能的考虑,我们都应该首选HashMap。
3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。


--------------------------------------- Dictionary类  --------------------------------------------------
     Dictionary类是一个抽象类,定义了一个映射键(keys)与值(values)的数据结构。该类可以通过特定的键来访问数据。由于Dictionary类是抽象类,它仅仅提供了一个用于健与数据之间映射的数据结构框架,而不是一个特定的实体。
     通常,Dictionary被用来将一个对象和一个名字联系起来,并基于这个名字来检索对象。在Dictionary中,名字对象被称为一个关键字,可为任意类型的对象,和关键字相联系的对象称为值。一个关键字只能与一个值相对应,但是一个值可以有多个关键字。 
7.11.1 在Dictionay中存储对象 
     在Dictionary中,pul方法使用特定的关键字来存储对象:
     ·public abstrack Object put(Object key,Object value) throws NullPointarException
     用put方法返回的对象是从前与该关键字相联系的对象,如果没有以前的联系,则返回null。不能将key或value设置为null值,如果将null传递给这两个参数中的任意一个,将产生一个NullPointerException异常。 
7.11.2 从Dictionary中检索对象 
     get方法查找Dictionary和一个特定的关键字相联系的对象:
     ·public abstract Object get(Object key) 如果没有和这个关键字相对应的值则返回null 
7.11.3 从Dictionary中移走对象 
     ·public abstrac Object remove(Object key) 为了从Dictionary中移走一个“关键字-值”对。返回值是与关键字相联系的对象,如果没有和这个关键字相联系的对象,返回null。
     ·public abstract boolean isEmpty() 如果Dictionary中没有对象,isEmpty方法返回true:
     ·public abstract int size() 返回Dictionary中含有多少个“关键字-值”对。
     ·public abstract Enumeration keys() 返回一个枚举对象,该对象允许检查Dictionary中所有的关键字。
     ·public abstract Enumeration elements() 对于Dictionary中的所有值,elements方法返回一个枚举对象。 
  上一页   下一页 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值