1.继承和实现区别
hashTable是基于陈旧Dictionary类,完成map接口;HashMap继承与AbstractMap,AbstractMap完成map接口
2.线程安全问题
HashTble的方法是同步的,而hashMap是未同步的,所以在多线程的场合要手动同步hashMap
3.对null处理不同
HashTable是不允许null值(key与value都不可以),hashMap允许(key与value都可以)
4.方法不同
HashTable有一个contains,功能与containsValue功能一样
5.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的;
int hash=key.hashCode();
int index=(hash&0x7FFFFFF)%tab.length;
而HashMap重新计算hash值,而且用户代替求模
int hash=hash(K);
int i=indexFor(hash,table.legth);
6.HashTable使用Enumeration ,HashMap使用Iteration