HashMap和Hashtable的区别

相同点:HashMap和Hashtable都是java的集合类,都可以用来存放java对象
区   别:
    一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是java 1.2引进的Map接口的一个实现。

 

    二.同步性:Hashtable是同步的。这个类中的一些方法保证了Hashtable中的对象是线程安全的。而HashMap则是异步的,因此HashMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合,那么使用HashMap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销,从而提高效率。

 

    三.值:HashMap可以让你将空值作为一个表的条目的key或value,但是Hashtable是不能放入空值的(null)。

代码
import java.util.HashMap;
import java.util.Hashtable;

public class Test {
public static void main(String[] args) {
HashMap hm
= new HashMap();
hm.put(
null, null);// 可以放入null键和值
System.out.println(hm.get(null));// 运行时不会出现错误

Hashtable ht
= new Hashtable();
ht.put(
null, null);// 可以放入null键和null值
ht.put("abc", null);// 可以放入null键和null值
ht.put(null, "aaa");// 可以放入null键和null值

// 下面的3种得到值的方式都会出现空指针异常。也就是说只可以放不可以获得。
System.out.println(ht.get(null));// 运行时会出现错误
System.out.println(ht.get("abc"));// 运行时会出现错误
System.out.println(ht.get(null));// 运行时会出现错误
}
}

 

posted @ 2010-12-23 12:43  meng72ndsc  阅读(250)  评论(0编辑  收藏  举报