HashMap要注意的两个点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap要注意的两个点相关的知识,希望对你有一定的参考价值。

这篇是写给自己看的。总结jdk的HashMap实现。

HashMap需要注意的两个点是

  • 构造函数的参数load factor有啥用?
  • HashMap是线程不安全的。

load factor

HashMap的构造函数。

public HashMap(int initialCapacity, float loadFactor)

其中 initialCapacity 是Map的初始容量,很好理解。那 loadFactor 是什么含义呢?下面举个例子解释一下。

假设initialCapacity=16,loadFactor=0.75。那么当Map中存放的key数量达到16*0.75=12个时,Map的容量就翻倍,变成32。所以loadFactor的作用就是指定Map容量翻倍的时机,当Map实际存放entry的数量达到initialCapacity*loadFactor时,容量就翻倍。

实际上initialCapacity=16,loadFactor=0.75是HashMap默认的参数。

HashMap是线程不安全的

jdk中HashMap的实现是线程不安全的,意思就是如果多线程对HashMap对象进行访问,可能出问题。

想变成线程安全的话,需要在创建HashMap对象时用Collections.synchronizedMapmethod进行包装。如下代码。

Map m = Collections.synchronizedMap(new HashMap(...));

(完)

以上是关于HashMap要注意的两个点的主要内容,如果未能解决你的问题,请参考以下文章

hashmap冲突的解决方法以及原理分析:

大厂面试必问!HashMap 怎样解决hash冲突?

包含不同片段的HashMap(或ArrayList)

你不知道的HashMap

jenkins中shell脚本编写的两个注意点

HashMap 和 ConcurrentHashMap 的区别