1)线程安全性不同
HashMap是线程不安全的,HashTable是线程安全的,其中的方法是Synchronize的,在多线程并发的情况下,可以直接使用HashTabl,但是使用HashMap时必须自己增加同步处理。
2)是否提供contains方法
HashMap只有containsValue和containsKey方法;HashTable有contains、containsKey和containsValue三个方法,其中contains和containsValue方法功能相同。
3)key和value是否允许null值
Hashtable中,key和value都不允许出现null值。HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。
4)数组初始化和扩容机制
HashTable在不指定容量的情况下的默认容量为11,而HashMap为16,Hashtable不要求底层数组的容量一定要为2的整数次幂,而HashMap则要求一定为2的整数次幂。
Hashtable扩容时,将容量变为原来的2倍加1,而HashMap扩容时,将容量变为原来的2倍。
本文详细比较了HashMap和HashTable在线程安全性、contains方法、null值处理以及扩容机制上的差异。HashMap适合单线程环境,不保证同步,而HashTable则是线程安全的选择。此外,HashMap仅提供containsValue和containsKey,而HashTable有contains、containsKey和containsValue。对于null值,HashMap允许,但HashTable不允许。最后,两者在扩容策略上也有所不同。
1587

被折叠的 条评论
为什么被折叠?



