通过阅读java源代码发现HashMap和Hashtable的异同点:
相同点:
1.都是由数组实现
2.key都是通过hash算法
3.put方法,当key存在是返回的是原来的value,不存在时返回的是null
不同点:
1.代码风格不一样,设计不一样(估计不是同一个人写的,个人猜测)
2.数组默认大小不一样 hashMap(16) hashtable(11)
3.构造方法传int 如:
HashMap map = new HashMap(31) 开辟的空间是32 取的是临界 2的n次方
Hashtable hashTable = new Hashtable(31) 开辟的空间是31
4.HashMap key 可以为空 HashTable key不能为空(抛出空指针异常)
5.hashmap的空间达到数组大小*因子(默认0.75)时,开辟的空间是原来的2倍,hashtable是2倍+1
6.hashmap是非线程安全的,hashtable是线程安全的