Вопрос:

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

c#

22934 просмотра

5 ответа

2325 Репутация автора

Как преобразовать список Объектов в Очередь, поддерживающую тот же самый порядок?

Автор: GigaPr Источник Размещён: 11.08.2010 11:37

Ответы (5)


3 плюса

45652 Репутация автора

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-- )

Автор: Fyodor Soikin Размещён: 11.08.2010 11:38

51 плюса

13118 Репутация автора

Решение

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

var queue = new Queue<T>(list);    // where 'T' is the lists data type.
Автор: Ryan Brunner Размещён: 11.08.2010 11:39

0 плюса

194410 Репутация автора

var mylist = new List<int> {1,2,3};
var q = new Queue<int>(mylist);
Автор: zerkms Размещён: 11.08.2010 11:41

9 плюса

96619 Репутация автора

Что вы имеете в виду под «тем же порядком»?

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

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

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

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

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

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

Автор: Dan Tao Размещён: 11.08.2010 11:42

0 плюса

16939 Репутация автора

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

public static class ListExtensions
{
    public static Queue<T> ToQueue<T>(this List<T> items) => new Queue<T>(items);
}
Автор: ΩmegaMan Размещён: 12.06.2019 06:43
Вопросы из категории :
32x32