Каков самый быстрый способ преобразования Queue
в List
, сохраняя порядок очередей?
Преобразование очереди в список
Ответ 1
Самый быстрый способ - использовать LinkedList в первую очередь, который может использоваться как список или очередь.
Queue q = new LinkedList();
List l = (List) q;
В противном случае вам нужно взять копию
List l = new ArrayList(q);
Ответ 2
Pass Queue
Кому ArrayList
Конструктор
Самый простой способ просто создать ArrayList
и передать Queue
в качестве аргумента в конструкторе ArrayList, который принимает Collection
. A Queue
является Collection
, поэтому работает.
Это самый простой способ, и я считаю, что это самый быстрый способ.
List<?> list = new ArrayList<>( myQueue );
Ответ 3
Queue queue = new LinkedList();
...
List list = new ArrayList(queue);
Ответ 4
Google:
Queue fruitsQueue = new LinkedList();
fruitsQueue.add("Apples");
fruitsQueue.add("Bananas");
fruitsQueue.add("Oranges");
fruitsQueue.add("Grapes");
List fruitsList = new ArrayList(fruitsQueue);
Ответ 5
Отвечая на старый вопрос для пользователей, которые уже на 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));
Ответ 6
Если вы конвертируете PriorityQueue в List, помните, что на самом деле это куча, поэтому порядок определяется методом poll()
. Вышеуказанные методы не сохранят естественный порядок очереди.