HashMap与HashTable的区别,HashMap实现同步的方法

1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。

2.hashTable同步的,线程安全,而HashMap是非同步的,线程不安全,效率上逼hashTable要高。

3.hashMap允许空键值,而hashTable不允许。

4.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

5.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;

 

HashMap实现同步的方法:调用Collections的静态方法Collections.synchronizedMap(Map map);,返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。

 

同时说一下,ArrayList和HashSet,他们也都不是同步的,都是线程不安全的,对其实现同步的方式和HashMap的方式相同,都允许使用null元素,ArrayList分配的初始空间为10,HashSet分配的初始空间为16





你可能感兴趣的:(HashMap与HashTable的区别,HashMap实现同步的方法)