Преобразование очереди в список

Каков самый быстрый способ преобразования 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(). Вышеуказанные методы не сохранят естественный порядок очереди.