如何将对象列表转换为对象队列
答
Queue
具有一个构造函数在ICollection
。您可以将您的列表到队列中使用相同的元素初始化:
var queue = new Queue<T>(list); // where 'T' is the lists data type.
答
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--)
答
var mylist = new List<int> {1,2,3};
var q = new Queue<int>(mylist);
答
什么你的意思做“相同的顺序?”
如果你这样做:
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
是否存在非通用队列? – zerkms 2010-08-11 23:42:04
好的。实际上有一个非通用队列,但你可能需要通用版本。我已经更新了我的答案。 – 2010-08-11 23:44:15
@zerkms:'System.Collections'命名空间中有一个非泛型'Queue'类:http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx – Rich 2010-08-11 23:45:05