队列排序

时间:2009-02-18 15:49:38

标签: c# queue

我有一个项目数组,这些项目已经过排序,以便最旧的项目位于数组中。

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

我该怎么做?

4 个答案:

答案 0 :(得分:7)

使用LINQ to Objects ...

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

编辑:Ops,错误的方式。

答案 1 :(得分:2)

如果您知道您的阵列已经按最早排序 - 那么您可以使用:

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

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

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

然后,您只需拨打q.Dequeue即可获取最旧到最新订单的商品。

答案 2 :(得分:2)

你想要一个priority queue。然后,您的收货是否已分拣无关紧要。

也许库中有一个实现。

PS:您案例中的优先级会映射到年龄

答案 3 :(得分:1)

试试这个

public static T ArrayToQueue<T>(T[] items) {
  var queue = new Queue<T>();
  Array.ForEach(items, i => queue.Enqueue(i));
  return queue;
}