HashMap和HashTable的区别
HashMap:
- HashMap允许key值为null,但是只能有一个为null,重复的会将其覆盖
Map map = new HashMap();
// HashMap集合允许key为null
map.put(null,null);
System.out.println(map.size()); // 1
// key重复的话value覆盖
map.put(null,100);
System.out.println(map.size()); // 1
// 通过key获取value
System.out.println(map.get(null)); // 100
Hashtbale:
- Hashtable的key和value均不能为null
- Hashtable方法带有synchronized关键字,线程安全的,线程安全有其他更好的方案,该关键字导致了Hashtable对线程的处理效率较低
- Hashtable的初始化容量是11,默认加载因子是0.75
- Hashtable的扩容是: 原容量 * 2 +1
Map map = new Hashtable();
/**
* 以下均抛出异常
*/
map.put(null,"123");
map.put(100,null);