Java HashMap调整大小的时间复杂度

问题描述 投票:3回答:2

[我想知道Java HashMap调整大小时的时间复杂度是多少?据我了解,对于HashMap,表的大小始终是2的偶数的幂,因此,只要我们调整表的大小,就无需重新哈希所有键(如果我错了,请纠正我),我们需要做的所有是分配没有空间并复制旧表中的所有条目(我不太确定JVM如何在内部处理该表),对吗?而对于Hashtable,因为它使用质数作为表的大小,所以每当我们调整表的大小时,我们都需要重新哈希所有条目。所以我的问题是,调整HashMap的大小是否仍需要O(n)线性时间?

我想知道当负载因子超过阈值时,Java HashMap调整大小的时间复杂度是多少?据我了解,HashMap的表大小始终是2的幂,甚至是偶数...

java hashmap hashtable time-complexity
2个回答
7
投票

O(N)调整大小是否还需要HashMap时间?


0
投票

调整表大小时,必须将原始表的全部内容复制到新表中,因此调整表大小需要O(n)时间,其中n是原始表中元素的数量。 HashMap上任何操作的摊销成本(假设统一哈希假设)为O(1),但是,是的,单个插入操作的最坏情况成本为O(n)。

© www.soinside.com 2019 - 2024. All rights reserved.