如何将对象列表转换/转换为对象队列

时间:2010-08-11 23:37:04

标签: c#

如何将对象列表转换为保持相同顺序的队列?

5 个答案:

答案 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);
}