2010-08-11 177 views

回答

39

Queue具有一个构造函数在ICollection。您可以将您的列表到队列中使用相同的元素初始化:

var queue = new Queue<T>(list); // where 'T' is the lists data type. 
+0

是否存在非通用队列? – zerkms 2010-08-11 23:42:04

+0

好的。实际上有一个非通用队列,但你可能需要通用版本。我已经更新了我的答案。 – 2010-08-11 23:44:15

+0

@zerkms:'System.Collections'命名空间中有一个非泛型'Queue'类:http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx – Rich 2010-08-11 23:45:05

3
var q = new Queue<Object>(); 
for(int i = 0; i < list.Count; i++) q.Enqueue(list[i]); 

也就是说,假设“相同顺序”意味着要从队列中出列的第一项应该是list [0]。

如果这意味着相反的,只要使用逆循环:for(int i = list.Count-1; i >= 0; i--)

0
var mylist = new List<int> {1,2,3}; 
var q = new Queue<int>(mylist); 
4

什么你的意思做“相同的顺序?”

如果你这样做:

var queue = new Queue<object>(list); 

那么队列将在相同的顺序列表,这意味着到Dequeue的调用将返回此前在list[0]居住的元素列举了。

如果你这样做:

var queue = new Queue<object>(list.AsEnumerable().Reverse()); 

那么队列会以相反的顺序为列表,这意味着到Dequeue的调用将返回此前在list[list.Count - 1]居住的元素列举了。

+0

提及两个方向。 – 2010-08-12 01:04:46

相关问题