HashMap put()api时间复杂度

时间:2017-01-03 12:08:18

标签: java algorithm collections hashmap time-complexity

所以我正在阅读关于Java集合api的内容,并且想知道 SharedPreferences prefs = getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE); String name = prefs.getString("jsonKEY", null); api,根据文档说它是一个恒定的时间操作,但令我困惑的是,是否将重新考虑作为时间复杂性的一部分考虑在内计算与否。

另一方的

HashMap put() ArrayList api明确说明其摊销o(n)即添加n元素需要花费n时间,为什么它不适用于{{1}然后放?尽管add()在达到加载因子时动态创建更大的桶,然后重新应用哈希值来确定新的桶位置。

任何有关上述解释的帮助都将受到高度赞赏,如果这些问题需要转移到其他部分,请先告知我们。

感谢。

1 个答案:

答案 0 :(得分:1)

每当表变得太满时,就会分配一个大的常数因子(例如,两倍大)的新表,并且所有元素都从旧表移动到新表。因此,put()的单个特定调用有时可以在Θ(n)时间内运行,但是(从空表开始)put()的n个调用的整个序列将始终在预期的O(n)时间内运行 - 按摊销预计每次操作的O(1)时间。