为啥插入 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.Node
的updated
方法。在最坏的情况下,它会扫描整个集合以检查密钥是否已经存在(正如您在评论中建议的那样):
https://github.com/scala/scala/blob/8a2cf63ee5bad8c8c054f76464de0e10226516a0/src/library/scala/collection/immutable/ListMap.scala#L173
【讨论】:
以上是关于为啥插入 ListMap O(n)?的主要内容,如果未能解决你的问题,请参考以下文章