Ответ
Итератор в 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()) // Может быть любой порядок
}