"景先生毕设|www.jxszl.com

HashMap和Hashtable比较

2023-09-12 15:40编辑: www.jxszl.com景先生毕设
                      HashMap和Hashtable比较
1.HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,主 要区别在于 HashMap 允许空(null)键值(key),由于非线程安全,
在只有一个线程访问 的情况下,效率要高于 Hashtable。
2.HashMap可以接受null(键值(key)和值(value)都可以为null),而Hashtable则不行,会抛出NullPointerException异常。
3.Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2引进的 Map interface 的一个实现。
4.最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable 时,
不需要自己为它的方法实现同步,而 HashMap 就必须为之 供外同步。
Hashtable 和 HashMap 采用的 hash/rehash 算法都大概一样,所以性能不会有很大的差异。



      ///
      ///keySet
      ///
     public static void keySetCostTimes(HashMap m){
        long bs = Calendar.getInstance().getTimeInMillis();
        Iterator i = m.keySet().iterator();
        while(i.hasNext()){
            System.out.print(m.get(i.next()));
        }
        System.out.println();
        System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
       
    }
    ///
    ///ntrySet
    ///
    public static void entrySetCostTimes(HashMap m){
        long bs = Calendar.getInstance().getTimeInMillis();
        Iterator i = m.entrySet().iterator();
        while(i.hasNext()){
            Entry entry = (Entry) i.next();
            System.out.print(entry.getValue());
        }
        System.out.println();
        System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
    }
}
主要有四点:
一HashMap和Hashtable都实现了Map接口
二.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

三.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的,线程要更新Hashtable时要首先获得同步锁,
其它线程要等到同步锁被释放之后才能再次获得同步锁更新Hashtable。

四.值:只有HashMap可以让你将空值作为一个表的条目的key或value


JAVA/204.html">http://www.itemperor.com/a/JAVA/204.html

原文链接:http://www.jxszl.com/biancheng/JAVA/446556.html