Java基础知识强化之集合框架笔记66:Map集合面试题之HashMap和Hashtable区别(重要)
2015-10-10 13:45
976 查看
1. HashMap和Hashtable区别 ?
• Hashtable:线程安全,效率低。不允许null键和null值
[b] • HashMap:线程不安全,效率高。允许null键和null值[/b]
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的算法类似,所以性能不会有很大差异。
• 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的算法类似,所以性能不会有很大差异。
相关文章推荐
- 【SQL】今天的一个sql面试题(分组函数使用)
- iOS进阶面试题
- 黑马程序员-------C中的运算符大集合
- 作为面试官之后的一些体会
- 黑马程序员_IO流
- 黑马程序员--java基础日记--集合
- 黑马程序员—Foundation框架之NSDictionary与NSMutableDictionary
- 黑马程序员_毕向东_Java基础视频教程第01天_20151010(六)
- 投资什么,收益最高?
- 给IT新人的15个建议:苦逼程序员的辛酸反省与总结
- MFC面试问题
- 程序员的未来
- ==与equals
- 从1.5k到18k, 一个程序员的5年成长之路
- 程序员必读的十一本书
- 高仿网易云音乐客户端的Home页面切换Tabhost-IT蓝豹
- 千万别理程序员
- (转)给程序员第一天工作留下好印象的10个方式
- 面试题:GPS定位一个点,至少需要几个卫星?
- 程序员应该具备的能力