详解HashMap 与 Hashtable 的区别

 历史原因: Hashtable继承Dictonary类, HashMap继承自abstractMap

我们来看下源码:

详解HashMap 与 Hashtable 的区别_第1张图片

详解HashMap 与 Hashtable 的区别_第2张图片

 HashMap允许空的键值对, 但最多只有一个空对象,而HashTable不允许。

 

  public static void main(String[] args) throws InterruptedException {
        HashMap hashMap = new HashMap();
        hashMap.put(null,null);
        System.out.println(hashMap);
          }

详解HashMap 与 Hashtable 的区别_第3张图片

  public static void main(String[] args) throws InterruptedException {
        Hashtable hashtable = new Hashtable();
        hashtable.put(null,null);
        System.out.println(hashtable);
          }

运行直接报错

详解HashMap 与 Hashtable 的区别_第4张图片

HashTable方法上有synchronized关键字,是同步的,效率低,但是安全。

详解HashMap 与 Hashtable 的区别_第5张图片

HashTable方法上没有synchronized关键字,是不同步的,效率高,不安全。

详解HashMap 与 Hashtable 的区别_第6张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java基础)