如果你纠结的是new HashMap<>(initialCapacity)中的initialCapacity如何设定的话,那initialCapacity = 数据量/加载因子 + 1,这个是结合空间和时间成本而做出的折衷的大小,和jdk版本没有任何关系。jdk8的红黑树只是某一个桶冲突过多时链表树化加快读写的一个解决方式。 我不清楚你多大的数据量,如果非常大的话,你的总量除以0.75加1与总量除以100加1其实在初始化map时生成的结构可能是一样的(计算出来的扩容边界threshold是相同的),原因你可以看下map的tableSizeFor(int cap)方法的源码。 关于负载因子的设定也就是关于时间、空间的选择问题,负载因子设定的小,空间利用率低,但大的空间会导致冲突的概率降低了因而提升了读写速度。假如同样的初始值大小, 负载因子小的是比较快的。
50,545
社区成员
85,621
社区内容
加载中
试试用AI创作助手写篇文章吧