Гарантирует ли Iterator очередность

«Гарантирует ли Iterator очередность» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Итератор в Java (и Kotlin) гарантирует порядок элементов только для коллекций, которые сами по себе упорядочены. Например:

  • Гарантируют порядок: ArrayList, LinkedList (в порядке добавления), LinkedHashSet (по порядку вставки), TreeSet (сортировка)
  • Не гарантируют: HashSet, HashMap (порядок может меняться)

Пример с ArrayList (гарантированный порядок):

val list = listOf("A", "B", "C")
val iterator = list.iterator()
while (iterator.hasNext()) {
    println(iterator.next()) // Всегда A, B, C
}

Для HashSet порядок не гарантирован:

val set = hashSetOf("A", "B", "C")
val iterator = set.iterator()
while (iterator.hasNext()) {
    println(iterator.next()) // Может быть любой порядок
}