• Java基础知识强化之集合框架笔记66:Map集合面试题之HashMap和Hashtable区别(重要)


    1. HashMap和Hashtable区别 ?

      • Hashtable:线程安全,效率低。不允许null键和null值
      • HashMap:线程不安全,效率高。允许null键和null值

     1 package cn.itcast_07;
     2 
     3 import java.util.Hashtable;
     4 
     5 /*
     6  * 1:Hashtable和HashMap的区别?
     7  * Hashtable:线程安全,效率低。不允许null键和null值
     8  * HashMap:线程不安全,效率高。允许null键和null值
     9  * 
    10  */
    11 public class HashtableDemo {
    12     public static void main(String[] args) {
    13         // HashMap<String, String> hm = new HashMap<String, String>();
    14         Hashtable<String, String> hm = new Hashtable<String, String>();
    15 
    16         hm.put("it001", "hello");
    17         // hm.put(null, "world"); //NullPointerException
    18         // hm.put("java", null); // NullPointerException
    19 
    20         System.out.println(hm);
    21     }
    22 }

    2. HashMap和Hashtable区别总结:

      Hashtable、HashMap都是Map接口的实现类。

    (1)HashMap去掉了Hashtable的contains方法(容易产生歧义),但是加上了containsValue()和containsKey()方法。


    (2)Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步(Collections.synchronizedMap)。

    正因为如此,Hashtable是一个线程安全的Map实现,但是HashMap是线程不安全的Map实现,所以HashMap比Hashtable的性能高一点。但是如果是多个线程访问同一个Map对象的时候,使用Hashtable实现类会更好


    (3)HashMap允许空键值(key 和 value 都可以为null),而Hashtable不允许(key 和 value 都不可以为null)。

    (4)Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

     

  • 相关阅读:
    android selector失效的原因
    Android TabActivity使用方法
    Android Build.VERSION.SDK_INT兼容介绍
    数组与指针
    字符串与字符串函数
    C控制语句:分支和跳转
    C控制语句:循环
    运算符、表达式、语句
    select
    正则验证数字
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4866675.html
Copyright © 2020-2023  润新知