HashMap和HashTable的区别
-
HashTable的key和value都不允许为null值,而HashMap的key和value则都是允许null值的。这个其实没有好坏之分,只是Sun为了统一Collection的操作特性而改进的。
-
HashTable有一个contains(Object value)方法,功能上与containsValue(Object value)一样,但是在实现上花销更大,现在已不推荐使用。而HashMap只有containsValue(Object value)方法。
-
HashTable使用Enumeration,HashMap使用Iterator。Iterator其实与Enmeration功能上很相似,只是多了删除的功能。用Iterator不过是在名字上变得更为贴切一些。模式的另外一个很重要的功用,就是能够形成一种交流的语言(或者说文化)。有时候,你说Enumeration大家都不明白,说Iterator就都明白了。
-
hashtable是java一开始发布时就提供的键值映射的数据结构,其所有的public方法都利用synchronized关键字修饰,所以是线程安全的,效率低。hashmap是jdk1.2推出新的Collection库包含的,hashMap是非线程安全的,效率高。