1

我有一个项目数组,排序后最旧的项目在数组中是第一个。

我想从数组中加载一个队列,这样当我弹出队列中的项目时,最旧的项目首先出现。

我怎样才能做到这一点?

4

4 回答 4

7

使用 LINQ 到对象...

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

编辑:操作,错误的方式。

于 2009-02-18T15:51:26.070 回答
2

你想要一个优先队列。然后,您的传入项目是否已排序并不重要。

也许图书馆里有一个实现。

PS:在您的情况下,优先级将映射到age

于 2009-03-16T07:53:25.473 回答
2

如果您知道您的数组已经按最早排序,那么您可以使用:

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

如果数组未预先​​排序,则可以使用 LINQ 对其进行排序:

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

然后你可以打电话q.Dequeue以从最旧到最新的顺序获取项目。

于 2009-02-18T16:00:38.950 回答
1

尝试这个

public static T ArrayToQueue<T>(T[] items) {
  var queue = new Queue<T>();
  Array.ForEach(items, i => queue.Enqueue(i));
  return queue;
}
于 2009-02-18T15:53:37.877 回答