HashMap和HashTable区别
1、HashMap是非线程安全的,HashTable是线程安全的。
2、HashMap的键和值都允许有null值存在,而HashTable则不行。
3、因为线程安全的问题,HashMap效率比HashTable的要高,HashTable内部的方法基本都是synchronized。
HashMap(数组+链表)中几个重要的点:
1.初始数组大小16
2.最大数组为2的30次方
3.装载因子(用于扩容)
4.put方法(通过key的hashCode(),算出真实的数组索引i,hash % Entry[].length;)
4.1 可以传入null,putForNullKey(value),存放到第0个数组中
4.2 添加Entry时超过threashold,resize(2*table.length)两倍扩充
4.3 若i冲突, 遍历链表找到相同则更新并返回。
5.get方法(通过key的hashCode(),hash(key.hashCode()) % Entry[].length算出索引i)
ConcurrentHashMap知识点: