37

使用我使用的列表

List<int> list = new List<int>();
list.AddRange(otherList);

How to do this using a Queue?,这个集合没有 AddRange 方法。

Queue<int> q = new Queue<int>();
q.AddRange(otherList); //does not exists
4

3 回答 3

35
otherList.ForEach(o => q.Enqueue(o));

您还可以使用此扩展方法:

    public static void AddRange<T>(this Queue<T> queue, IEnumerable<T> enu) {
        foreach (T obj in enu)
            queue.Enqueue(obj);
    }

    Queue<int> q = new Queue<int>();
    q.AddRange(otherList); //Work!
于 2013-10-02T15:55:53.527 回答
21

Queue有一个构造函数,它接受一个ICollection. 您可以将列表传递到队列中以使用相同的元素对其进行初始化:

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

在你的情况下使用如下

Queue<int> ques = new Queue<int>(otherList);
于 2013-10-02T16:02:28.320 回答
5

You can initialize the queue list:

Queue<int> q = new Queue<int>(otherList);
于 2013-10-02T15:59:08.123 回答