如何在C#中将元素插入队列?

Bas*_*mme 8 c# queue

在C#中,我使用了Queue集合.我可以很容易地入队或出队.好的,现在我想在队列中间或队列的开头插入一些东西.我没有找到任何方法来做这样的事情.你推荐什么作为替代收藏?

Pav*_*aev 27

根据定义,队列只能将事物排入队列并使其出列.如果你想插入中间,那么你想要一个完整的列表(可能LinkedList<T>),而不是一个Queue.

我的意思是,你不要试图在超市的队列中间"插入"自己(我希望); 它的工作方式与此相同.


Jes*_*ess 15

你要找的是一个LinkedList<T>.您可以添加到开头,中间(使用AddBefore或AddAfter)或列表的结尾.

这比使用a更有优势,List<T>因为您可以使用RemoveFirst或RemoveLast让它更模仿Queue或Stack.


Ant*_*ols 5

虽然如果您发现自己处于无法使用队列以外的其他位置的情况下,此页面上的答案是正确的,您可以(稍加一些开销)将项目添加到队列中间.是否应该这样做是一个不同的故事.

var myQueue = new Queue<string>();
myQueue.Enqueue("item 0");
myQueue.Enqueue("item 10");

var myList = myQueue.ToList();
myList.Insert(1, "item 5");

myQueue = new Queue<string>(myList);
Run Code Online (Sandbox Code Playgroud)

  • 有用的技术。请注意,因为您正在创建一个新的 `Queue`,任何引用旧 Queue 的人都不会看到您的插入!有时是可以的,如果旧队列是“通过引用”传入的,并且没有其他人“松散”了对旧队列的引用。后一个要求是问题:如果您不能更改正在使用的类,则您可能也无法保证您可以创建新对象。在这种情况下,有必要将所有项目出列到您的临时列表中,插入,然后再次将它们全部入列。 (2认同)