2

在 Java 中,有一个名为Deque的类,我想在 .NET (C#) 中找到类似的东西。

我需要这个的原因是因为我需要查看集合中的最后一项,然后将集合中的第一项出列。

谢谢,AJ 拉文迪兰。

4

5 回答 5

7

PowerCollections有一个 Deque 类(以及经过验证的谱系)。

于 2009-12-21T04:51:09.937 回答
5

查看 .NET 的System.Collections.Generic.LinkedList集合,它可以用作双端队列。这是一个双向链表。

插入/删除

偷看:

  • First/Last属性。

    这些返回 a LinkedListNode<T>,而不是实际值。要获得价值,您必须添加.Value到最后。

于 2012-06-16T15:51:03.007 回答
2

List 应该为您做到这一点:

var l = new List<int>();
var last = l[l.Count - 1];
l.RemoveAt(0);
于 2009-12-21T04:50:04.180 回答
2

这是我对Deque<T>(使用环形缓冲区)和并发无锁的实现ConcurrentDeque<T>

这两个类都支持双端队列两端的 Push、Pop 和 Peek 操作,所有操作都在 O(1) 时间内完成。

于 2014-01-24T12:56:10.517 回答
0

在另一个 SO question中提到了这样的事情。

流行的答案似乎是用链表解决,Eric Lippert 提出了他自己的Deque 实现

所以我想简短的回答是否定的,.NET 中没有内置如此严格的数据结构

HTH。

于 2009-12-21T04:55:20.970 回答