看到了很多的面试题集里都有这么一个题: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();来填充的.
转载于:https://www.cnblogs.com/lilyzhang/archive/2009/10/04/1577974.html