Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Итерация в Hashtable, java

wefwe wefwfe Ученик (146), на голосовании 1 год назад
Почему при выводе элементов из Hashtable через итератор мы получаем наши ключи, отсортированные в порядке убывания, но если вывести через forEach мы получим в порядке возрастания?
При разборе через документацию я не увидел вызовов какой-либо функции в этих методах, которая бы разворачивала порядок ключей. Везде вызывается entry.next (). Как это происходит?
Голосование за лучший ответ
Оракул Оракул (62095) 1 год назад
Никакой последовательности не гарантируется. Сортируйте и будет конкретный порядок.
wefwe wefwfeУченик (146) 1 год назад
я знаю, что не гарантируется, но если использовать стандартный вывод через toString(), то будет выводиться так, как я указал в вопросе
Оракул Оракул (62095) wefwe wefwfe, понятно, потому что под капотом итератор возвращает приватный класс Enumenator и посмотрите на его nextElement метод Массив обходится с конца в начало
 while (et == null && i > 0) { 
    et = t[--i]; 
} 
Не Нужно Профи (755) 1 год назад
Ответ заключается в том, что Hashtable использует алгоритм хеширования, который сортирует ключи в порядке убывания. При использовании forEach () элементы Hashtable просматриваются в соответствующем порядке, указанном Hashtable.
Похожие вопросы