为啥插入 ListMap O(n)?

Posted

技术标签:

【中文标题】为啥插入 ListMap O(n)?【英文标题】:Why are insertions into ListMap O(n)?为什么插入 ListMap O(n)? 【发布时间】:2021-09-09 21:35:03 【问题描述】:

根据 scala 文档,insertions into the ListMap are O(n)

其他操作,例如插入或删除条目,也是 O(n),这使得这个集合只适用于少数元素。

插入链表的头部不应该是 O(1) 吗?为什么插入是 O(n)?

【问题讨论】:

【参考方案1】:

当你向非空的ListMap 添加元素时,会调用ListMap.Nodeupdated 方法。在最坏的情况下,它会扫描整个集合以检查密钥是否已经存在(正如您在评论中建议的那样): https://github.com/scala/scala/blob/8a2cf63ee5bad8c8c054f76464de0e10226516a0/src/library/scala/collection/immutable/ListMap.scala#L173

【讨论】:

以上是关于为啥插入 ListMap O(n)?的主要内容,如果未能解决你的问题,请参考以下文章

Python:比O(N)更快地插入列表?

排序插入排序 O(N^2)

数据结构之排序

面试之leetcode链表

直接插入排序

为啥我的检查约束没有停止这个空插入?