繁体   English   中英

ArrayList强制转换为PriorityQueue + java

[英]ArrayList cast to PriorityQueue + java

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

所以我做了一些在我看来很明显的事情,就像PriorityQueue z = (PriorityQueue) x ,其中x是arraylist。

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

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

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

非常感谢...

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM