今天小钱给大家介绍一个重要的话题: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值。
新闻热点
疑难解答