将队列转换为列表

MBZ*_*MBZ 13 java queue list

什么是一个转换的最快方式Queue进入List,同时保持队列顺序?

Pet*_*rey 24

最快的是首先使用LinkedList,它可以用作List或Queue.

Queue q = new LinkedList();
List l = (List) q;
Run Code Online (Sandbox Code Playgroud)

否则你需要复印一份

List l = new ArrayList(q);
Run Code Online (Sandbox Code Playgroud)


Min*_*hĩa 12

PriorityQueue如果您要从a转换List,请记住它实际上是一个堆,因此顺序是使用该poll()方法确定的,在这种情况下,通过此处其他一些答案中讨论的构造函数方式执行此操作将不会保持队列的自然顺序。

考虑到这一点,您可以按照以下思路进行:

List<E> result = new ArrayList<>(yourPriorityQueue.size());
while (!yourPriorityQueue.isEmpty()) {
    result.add(yourPriorityQueue.poll());
}
Run Code Online (Sandbox Code Playgroud)


Pan*_*yal 7

传递QueueArrayList构造函数

在ArrayList 的构造函数中创建一个ArrayList并将其Queue作为参数传递的最简单方法.A 是a ,所以有效.CollectionQueueCollection

这是最简单的方法,我也相信最快的方式.

List<?> list = new ArrayList<>( myQueue );
Run Code Online (Sandbox Code Playgroud)

  • 应该是公认的答案,这是直接解决问题的唯一答案。该问题涉及[`Queue`](http://docs.oracle.com/javase/8/docs/api/java/util/Queue.html)接口。Queue有许多实现,都与Java捆绑在一起,并且在[Google Guava](https://github.com/google/guava)等其他库中也可以找到。其他答案仅涉及[`LinkedList`](http://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html),但这只是许多实现之一。 (2认同)