Заказ очереди - PullRequest
       6

Заказ очереди

1 голос
/ 18 февраля 2009

У меня есть массив элементов, отсортированный так, чтобы самый старый элемент был первым в массиве.

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

Как я могу это сделать?

Ответы [ 4 ]

7 голосов
/ 18 февраля 2009

Использовать LINQ для объектов ...

var q = new Queue<T>(array.OrderBy(d => d.date));

РЕДАКТИРОВАТЬ: Ops, наоборот.

2 голосов
/ 16 марта 2009

Вы хотите приоритетную очередь . Тогда не имеет значения, отсортированы ли ваши входящие товары или нет.

Возможно, в библиотеке есть реализация.

PS: приоритет в вашем случае будет соответствовать age .

2 голосов
/ 18 февраля 2009

Если вы знаете, что ваш массив уже отсортирован по возрасту, то вы можете использовать:

Queue<YourType> q = new Queue<YourType>(yourSortedArray);

Если массив предварительно не отсортирован, вы можете отсортировать его с помощью LINQ:

Queue<YourType> q =
    new Queue<YourType>(yourUnsortedArray.OrderBy(x => x.YourDateProperty));

Тогда вы можете просто позвонить q.Dequeue, чтобы получить предметы в порядке от старейшего до нового.

1 голос
/ 18 февраля 2009

Попробуйте это

public static T ArrayToQueue<T>(T[] items) {
  var queue = new Queue<T>();
  Array.ForEach(items, i => queue.Enqueue(i));
  return queue;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...