如何将对象列表转换为保持相同顺序的队列?
答案 0 :(得分:51)
Queue
有一个接收ICollection
的构造函数。您可以将列表传递到队列中,以使用相同的元素对其进行初始化:
var queue = new Queue<T>(list); // where 'T' is the lists data type.
答案 1 :(得分:9)
“同一个订单是什么意思?”
如果你这样做:
var queue = new Queue<object>(list);
然后将以与列表相同的顺序枚举队列,这意味着对Dequeue
的调用将返回先前驻留在list[0]
的元素。
如果你这样做:
var queue = new Queue<object>(list.AsEnumerable().Reverse());
然后将以与列表相反的顺序枚举队列,这意味着对Dequeue
的调用将返回先前驻留在list[list.Count - 1]
的元素。
答案 2 :(得分: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-- )
答案 3 :(得分:0)
var mylist = new List<int> {1,2,3};
var q = new Queue<int>(mylist);
答案 4 :(得分:0)
将此扩展添加到工具箱中,以创建特定类型的FIFO队列。
public static class ListExtensions
{
public static Queue<T> ToQueue<T>(this List<T> items) => new Queue<T>(items);
}