1、继承:
HashTable继承自Dirctionary,HashMap继承自AbstractMap,两者都实现了Map接口;
2、线程安全:
HashTable方法是同步的,线程安全的。 HaspMap方法不是同步的,不是线程安全的。 对于多线程并发,可以直接使用HashTable。 要使用HashMap,必须进行HashMap同步处理。
3、键值:
HashTable不允许空键和空值。 HashMap允许空键。 一个或多个密钥的值可以为空。 在程序中,如果对HashMap使用get (参数为键)方法,则返回的结果为null,要么该键不存在,要么与该键对应的值为null,从而体现结果的二义性。 因此,在HashMap中,不能使用get )方法检查与键对应的值。 containskey ) )方法。
4、横移:
这两种遍历方式的实现不同。 HashTable和HashMap都实现了迭代器。 但是,由于历史原因,HashTable还使用Enumeration。
5、哈希值:
HashTable是直接使用对象的hashCode。 混列映射是重新计算混列值。
6、扩展:
HashTable和HashMap的基本实现的数组以及初始大小和扩展方法。 HashTable的初始大小为11,每次扩展时为2old 1。 HashMap的默认大小为16,始终为2的指数,每次扩展时为old2。