在保持队列顺序的同时将Queue
转换为List
的最快方法是什么?
答案 0 :(得分:22)
最快的方法是首先使用LinkedList,它可以用作列表或队列。
Queue q = new LinkedList();
List l = (List) q;
否则你需要复制一份
List l = new ArrayList(q);
答案 1 :(得分:5)
Queue
传递给ArrayList
构造函数最简单的方法是创建ArrayList
并将Queue
作为参数传递给带有constructor的ArrayList的Collection
。 Queue
是Collection
,因此有效。
这是最简单的方法,我也相信最快的方式。
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()
方法确定顺序。上述方法不会保留队列的自然顺序。