在 Java 中,有一个名为Deque的类,我想在 .NET (C#) 中找到类似的东西。
我需要这个的原因是因为我需要查看集合中的最后一项,然后将集合中的第一项出列。
谢谢,AJ 拉文迪兰。
PowerCollections有一个 Deque 类(以及经过验证的谱系)。
查看 .NET 的System.Collections.Generic.LinkedList集合,它可以用作双端队列。这是一个双向链表。
插入/删除
AddFirst
: 添加到开头AddLast
: 添加到结尾RemoveFirst
: 从头删除。不返回值。RemoveLast
: 从末端删除。不返回值。偷看:
List 应该为您做到这一点:
var l = new List<int>();
var last = l[l.Count - 1];
l.RemoveAt(0);
这是我对Deque<T>
(使用环形缓冲区)和并发无锁的实现ConcurrentDeque<T>
:
这两个类都支持双端队列两端的 Push、Pop 和 Peek 操作,所有操作都在 O(1) 时间内完成。
在另一个 SO question中提到了这样的事情。
流行的答案似乎是用链表解决,Eric Lippert 提出了他自己的Deque 实现。
所以我想简短的回答是否定的,.NET 中没有内置如此严格的数据结构
HTH。