将队列转换为列表

时间:2012-10-08 10:27:05

标签: java list queue

在保持队列顺序的同时将Queue转换为List的最快方法是什么?

6 个答案:

答案 0 :(得分:22)

最快的方法是首先使用LinkedList,它可以用作列表或队列。

Queue q = new LinkedList();
List l = (List) q;

否则你需要复制一份

List l = new ArrayList(q);

答案 1 :(得分:5)

Queue传递给ArrayList构造函数

最简单的方法是创建ArrayList并将Queue作为参数传递给带有constructor的ArrayList的CollectionQueueCollection,因此有效。

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

List<?> list = new ArrayList<>( myQueue );

答案 2 :(得分:3)

Queue queue = new LinkedList();
...
List list = new ArrayList(queue);

答案 3 :(得分:1)

Google:

Queue fruitsQueue = new LinkedList();
fruitsQueue.add("Apples");
fruitsQueue.add("Bananas");
fruitsQueue.add("Oranges");
fruitsQueue.add("Grapes");

List fruitsList = new ArrayList(fruitsQueue);

答案 4 :(得分:0)

对于已经使用Java 8的用户的老问题进行解答
Java 8提供了使用流的选项,您可以通过以下方式从队列中获取列表:

例如:

Queue<Student> queue = new LinkedList<>();
        Student s1 = new Student("A",2);
        Student s2 = new Student("B",1);
        Student s3 = new Student("C",3);
        queue.add(s1);
        queue.add(s2);
        queue.add(s3);

    List<Student> studentList = queue.stream().collect(Collectors.toCollection(ArrayList::new));

答案 5 :(得分:0)

如果要从PriorityQueue转换为List,请记住它实际上是一个堆,因此使用poll()方法确定顺序。上述方法不会保留队列的自然顺序。