首页 > 学院 > 开发设计 > 正文

HashMap与Hashtable的区别

2019-11-14 12:49:23
字体:
来源:转载
供稿:网友

今天小钱给大家介绍一个重要的话题: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值。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表