`
kkllmey
  • 浏览: 102026 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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方法返回一个枚举对象。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics