【发布时间】:2016-05-06 00:55:48
【问题描述】:
哪些 C# 集合最适合零索引插入和追加到末尾?
我想最简单的是LinkedList,但考虑到我对大型字节缓冲区的兴趣,我怀疑每个节点的内存成本对于我的需求来说可能过于昂贵。
我的理解是,普通的List 有一个缓冲区支持,其容量通常大于实际数据。当数据填满缓冲区时,会创建一个新缓冲区并将旧缓冲区的内容传输到新缓冲区。这对于追加到结尾非常有用,但对于一开始的增长来说却是可怕的。我的测试,将一百万个随机整数附加/插入到 List:
- 列表追加时间 0.014 秒。
- 列出零插入时间 173.343 秒
【问题讨论】:
-
一个队列在一端插入并在另一端移除。 Deque 在两端都有插入和删除。标准库中没有 Deque,但实现一个并不难。 (Java 有等价的 ArrayDeque)
-
啊,好吧,不知道那个。然后我假设在双端队列中数据位于容量缓冲区的中间。
-
双端队列的工作方式与队列相同,就像两端一样。数据只是“环绕”。它可以放在任何地方。
标签: c# .net collections