Как можно преобразовать список объектов в очередь, поддерживая тем самым порядок?
Как привести или преобразовать Список объектов в очередь объектов
Ответ 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);
}