代码改变世界

hashtable与HashMap区别

2009-10-04 15:09  floweriness  阅读(323)  评论(0)    收藏  举报
看到了很多的面试题集里都有这么一个题:HashMap和Hashtable的区别,自己也看了好几遍了,总是不记得,写下来当是一次笔记吧.
区别一它们的父类不同
public class Hashtable<K,V>
    extends Dictionary<K,V>
    implements Map<K,V>, Cloneable, java.io.Serializable
public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable
首先们看到Hashtable和HashMap的声明上就可以现前者是Dictionary的子类,而HashMap是AbstractMap的子类,但它们都实现了Map接口,并且都进行了序列化声明;

区别二前者是同步的,其性能要比后者差
如Hashtable的put方法
    public synchronized V put(K key, V value) {
// Make sure the value is not null
if (value == null) {
    throw new NullPointerException();
前者的方法大部分都进行了同步;

区别三,上面put方法中可以看出Hashtable中不允许null-->null的一个映射.
另外网上有人说的Hashtable有分类或排序,我还是没有弄明白是什么意思.如果有知道的朋友那就请教一下你咯,谢谢!

类似的还有一个HashSet,其实HashSet就是一个Hashtable的一个封装.只利用了Hashtable的Key部分,value全部用private static final Object PRESENT = new Object();来填充的.