我认为创建了一个新的N + 1项的ImmutableList。因此,它的复杂性应该是O(N)。
答案 0 :(得分:3)
解释了ImmutableList具有O(log n)复杂度的原因here:
为什么不可变类型更容易出现可变的O(log n)时间 类型是O(1)?这是内部数据结构的结果 允许在集合的实例之间共享。比如一个 mutable HashSet分配一个数组,并存储元素 索引处的数组由其哈希码确定。这个提供者 O(1)查找和存储时间。如果ImmutableHashSet使用了这个 相同类型的数据存储,然后每个突变都需要 重新分配和复制整个数组只是为了改变一个条目, 这将快速坦克性能和GC压力 收藏量增长很大。相反,这些不可变集合使用 不可变的平衡二叉树来存储他们的数据,允许非常 跨集合的变异实例的高效数据共享。如 但是,每次查找或更改都需要树遍历 (最坏的情况下)具有O(log n)的算法复杂度。
MSDN documentation for ImmutableArray提供了一些见解并显示了ImmutableArray和ImmutableList之间的复杂性差异: