Что выведет код Middle Задачи на Kotlin обновлено

ArrayDeque и PriorityQueue

Вопрос

Что выведет код? По строке на каждый вывод.

import java.util.PriorityQueue

fun main() {
    val dq = ArrayDeque<Int>()
    dq.addLast(1); dq.addLast(2); dq.addFirst(0)
    println(dq)
    println(dq.removeLast())
    val pq = PriorityQueue<Int>(compareByDescending { it })
    pq.addAll(listOf(5, 1, 8, 3))
    println(pq.poll())
    println(pq.poll())
    println(pq.size)
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: [0, 1, 2], 2, 8, 5, 2. ArrayDeque из stdlib добавляет с обоих концов: получаем [0, 1, 2], removeLast снимает 2.

Что выведет

[0, 1, 2]
2
8
5
2

Разбор

ArrayDeque из stdlib добавляет с обоих концов: получаем [0, 1, 2], removeLast снимает 2. PriorityQueue с обратным компаратором работает как max-куча: сначала 8, потом 5. В очереди остались два элемента.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.