Подтвердить что ты не робот

Как привести или преобразовать Список объектов в очередь объектов

Как можно преобразовать список объектов в очередь, поддерживая тем самым порядок?

4b9b3361

Ответ 1

Queue имеет конструктор, который принимает ICollection. Вы можете передать свой список в очередь, чтобы инициализировать его теми же элементами:

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

Ответ 2

Что вы подразумеваете под "тем же порядком?"

Если вы это сделаете:

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

Затем очередь будет перечислить в том же порядке, что и список, что означает, что вызов Dequeue вернет элемент, который ранее находился в list[0].

Если вы это сделаете:

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

Затем очередь будет перечислить в обратном порядке как список, а это означает, что вызов Dequeue вернет элемент, который ранее находился в list[list.Count - 1].

Ответ 3

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

То есть, если предположить, что "тот же порядок" означает, что первый элемент, подлежащий удалению из очереди, должен быть указан в списке [0].

Если это означает обратное, просто используйте обратный цикл: for( int i = list.Count-1; i >= 0; i-- )

Ответ 4

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

Ответ 5

Добавьте это расширение в свою панель инструментов, чтобы создать очередь FIFO определенного типа.

public static class ListExtensions
{
    public static Queue<T> ToQueue<T>(this List<T> items) => new Queue<T>(items);
}