您的位置:首页 > 职场人生

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

2015-10-10 13:45 976 查看
1. HashMap和Hashtable区别 ?

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

 package cn.itcast_07;

import java.util.Hashtable;

/*
* 1:Hashtable和HashMap的区别?
* Hashtable:线程安全,效率低。不允许null键和null值
* HashMap:线程不安全,效率高。允许null键和null值
*
*/
public class HashtableDemo {
public static void main(String[] args) {
// HashMap<String, String> hm = new HashMap<String, String>();
Hashtable<String, String> hm = new Hashtable<String, String>();

hm.put("it001", "hello");
// hm.put(null, "world"); //NullPointerException
// hm.put("java", null); // NullPointerException
19
System.out.println(hm);
}
}


2. HashMap和Hashtable区别总结:

(1)hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。

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

(3)hashMap允许空键值,而hashTable不允许。

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

(5)Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类。

顺便说一句,Hashtable和Hashmap采用的hash/rehash的算法类似,所以性能不会有很大差异。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: