HashMap深度剖析


HashMap是一个以键值对的方式保存数据的数据结构


结构

  1. HashMap的底层结构为一个散列数组,每个数组元素为链表/红黑树来保存Hash冲突的数据。


初始化

  1. HashMap的初始化散列数组长度为16,同时,HashMap的散列数组长度将始终为2的幂次方。
  2. HashMap的初始化是懒加载的,只有在第一次put元素时,底层的散列数组才会被创建。


扩容

  1. HashMap的负载因子是0.75。
  2. HashMap的扩容阈值为0.75 * 数组长度(默认阈值:16 * 0.75 = 12)。
  3. HashMap在put元素时,如果put后总元素个数大于扩容阈值,并且当前put元素与已存在的元素存在Hash冲突,将会触发HashMap的扩容机制resize()。
  4. 扩容后长度为当前长度 * 2。
  5. 扩容会创建新的数组对象并需要重新计算元素在数组中的位置,所以在已知元素数量时,应通过初始化时规定数组的长度,避免扩容带来的损耗。


HashMap
发布

街角有人祝福,巷口有人哭,这里却没人评论ε=(´ο`*)))