Hashtable和HashMap的区别:
1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
hashtable和hashmap在使用上的优劣
1.同步是指多线程的时候,如同步了,只能是有一个线程访问,当然同步了的话
访问速度上没有非同步的快
2.Hashtable不允许null key和null value
HashMap允许一个null key和多个null value
3.public class Hashtable extends Dictionary
implements Map, Cloneable, Serializable
(实现的是Map而不是Set)
public class HashMap extends AbstractMap
implements Map, Cloneable, Serializable
4. HashSet是一个只有key的HashMap,不过它是一个Collection
而不是一个Map
|