ArrayList强制转换为PriorityQueue + java

时间:2011-03-16 20:49:52

标签: java

我遇到这个问题,到目前为止我在整个程序中使用过Arraylist,现在我需要它的功能也是优先级队列。

所以我做了一些在我看来很明显并像PriorityQueue z = (PriorityQueue) x一样的表现 其中x是arraylist。

在运行时,这给出了一个错误,这是不可能的。

有没有简单的方法来完成这项工作。我不能将整个数组列表更改为优先级队列,因为那时我将不得不更新所有使用的函数.....

我应该每次从arraylist添加项目到新的优先级队列还是有更好的方法......

非常感谢...

3 个答案:

答案 0 :(得分:4)

PriorityQueue pq = new PriorityQueue();
pq.addAll(x);

答案 1 :(得分:0)

优先级队列有许多与之关联的额外代码,以确保优先级队列中的项按优先级排序。数组列表没有该代码,因此您不能将其强制转换为优先级队列。

一般情况下,事情可以安全地转发,但你在这里试图贬低一些东西。你不能这样做,因为无法保证数组列表的排序具有任何优先级。实现这两者的基础数据结构也不保证是相同的。

答案 2 :(得分:0)

没有简单的方法。 ArrayList实现List接口,但不是Queue

从列表内容创建新队列可能是最简单的。

如果您知道内容按优先级排序,并且您需要非常高效,请尝试使用由Queue支持的ArrayList类包装它,如果您需要在一个地方使用类似队列的对象,但在其他地方使用List是有充分理由的。