【发布时间】:2012-12-15 07:13:39
【问题描述】:
我正在编写一个应用程序,我想在其中实现一个对象数组,该数组将定期添加一个新项目。
我总是想知道最后添加的对象是哪个并且正在考虑将该对象放置在位置 0。(因此将每个项目向下推一个索引到最多 130 个项目)
这很容易使用 List 来实现
items.Insert(0,new item());
items.RemoveAt(130);
然后会自动将每个项目向下推并在 130 处删除该项目,但这对于数组来说并不是那么简单
我最初的想法在某处
for(int i = 129; i>0;i--)
{
items[i] = items[i-1];
}
items[0] = new item();
这让我可以简单地访问最新的项目(通过 index[0]),以及每个前面的项目(按创建顺序)(1 -> 129);
现在这本身相当简单,但我想知道是否还有其他方法可以执行此操作。
编辑:感谢您的快速回复,
我已经对此进行了一些测试(使用 100 万次迭代) 似乎队列方法在这里是最快的,但只是略微 然后列表 然后是处理 100 万个项目的数组需要多 50% 的时间
我想我会探索 queue 堆栈选项
再次感谢;
【问题讨论】:
-
为什么要为此使用数组?
-
可能有用的基于数组的队列实现在这里:java2s.com/Code/CSharp/Collections-Data-Structure/…
-
你所描述的听起来很像一个队列。 (msdn.microsoft.com/en-us/library/system.collections.queue.aspx)