【发布时间】:2021-09-09 21:35:03
【问题描述】:
根据 scala 文档,insertions into the ListMap are O(n)
其他操作,例如插入或删除条目,也是 O(n),这使得这个集合只适用于少数元素。
插入链表的头部不应该是 O(1) 吗?为什么插入是 O(n)?
【问题讨论】:
根据 scala 文档,insertions into the ListMap are O(n)
其他操作,例如插入或删除条目,也是 O(n),这使得这个集合只适用于少数元素。
插入链表的头部不应该是 O(1) 吗?为什么插入是 O(n)?
【问题讨论】:
当你向非空的ListMap 添加元素时,会调用ListMap.Node 的updated 方法。在最坏的情况下,它会扫描整个集合以检查密钥是否已经存在(正如您在评论中建议的那样):
https://github.com/scala/scala/blob/8a2cf63ee5bad8c8c054f76464de0e10226516a0/src/library/scala/collection/immutable/ListMap.scala#L173
【讨论】: