每日一题(三)

题目:

请说说HashMap和Hashtable的区别。

分析:

网上有很多讲述这个内容的帖子,有的把来龙去脉讲述的清楚,有的只是断章取义。现在从jdk文档里发掘他们的关系。

解答:

HashMap继承如下:

java.lang.Object

——java.util.AbstractMap<K,V>

————java.uitl.HashMap<K,V>

Hashtable继承如下:

java.lang.Object

——java.uitl.Dictionary<K,V>

————java.util.Hashtable<K,V>

可以看出两个类的父类不同。Hashtable继承的是老的Dictionary类,HashMap继承的是AbstractMap类。Hashtable的方法是Synchronize的,而HashMap的不是。当多个线程访问Hashtable时,不需要为它的方法实现同步,而HashMap必须为之提供同步(在我其他类别的博客里我会专门写一个例子,这边外同步就不做多说)。

两个类均实现了的接口:Serializable,Cloneable,Map<K,V>

来让我们看看他们的方法:

重要的方法:put(K key, V value),get(Object key),remove(Object key, V value),size().(增、取、删、取长)

一些明显的字眼:Set视图,Collection视图,默认加载因子(0.75),这些字眼听说过但是从来没有深入研究过(以后有机会会对他们进行分析与解释)。

还有一个重要的Hashtable的子类Properties类,在平常出现的次数比较多。可以保存到文件中。


你可能感兴趣的:(java,hash,哈希表,每日一题)