今天小錢給大家介紹一個重要的話題:HashMap與Hashtable的區別。再次強調,我在此不僅要說它們的區別,更重要的是,這是一道非常重要的企業面試題,幾乎每期大、中小型軟件公司面試出現的頻率會占60%-70%左右,無論你選擇從事Android開發、javaEE開發,還是大數據,Java基礎都非常重要,出現此題的概率也非常高,所以必須掌握它....步入正題:為什么要把它倆放一起做對比呢?Hashtable是從JDK1.0版本開始,從Java2平臺v1.2就被改進實現了Map接口,它和集合的Vector有些相似,因為Vector也是從JDK1.0版本開始,但最終它被HashMap給替代了,接下來我們重點說它倆的區別是什么:它倆的區別:首先我們說它們的共同點:底層都是哈希算法,都是雙列集合;區別是:1.HashMap是線程不安全的,線程不安全效率高,它是JDK1.2版本的;
Hashtable是線程安全的,它的效率低,它是JDK1.0版本的;
2.HashMap可以存儲null鍵和null值;
Hashtable不可以存儲null鍵和null值。
接下來我們來看下案例演示它倆的區別,貼上代碼:
package cn.edu.jit.map;import java.util.HashMap;import java.util.Hashtable;/** * HashMap和Hashtable的區別(很重要的面試題) * 它倆的區別: 首先我們說它們的共同點:底層都是哈希算法,都是雙列集合; 區別是: 1.HashMap是線程不安全的,線程不安全效率高,它是JDK1.2版本的; Hashtable是線程安全的,它的效率低,它是JDK1.0版本的; 2.HashMap可以存儲null鍵和null值; Hashtable不可以存儲null鍵和null值。 * @author Rocky * */public class HashTableMapDemo { public static void main(String[] args) { HashMap<String, Integer> hm = new HashMap<String, Integer>(); hm.put(null, 23); System.out.PRintln(hm);//{null=23} hm.put("李四", null); System.out.println(hm);//{null=23, 李四=null} Hashtable<String, Integer> ht = new Hashtable<String, Integer>(); ht.put(null, 23); System.out.println(ht);//報異常NullPointerException ht.put("王五", null); System.out.println(ht);//同樣也報異常NullPointerException }}所以我們說HashMap可以存儲null鍵和null值,而Hashtable不可以存儲null鍵和null值。
新聞熱點
疑難解答