Значения печатаются в том порядке, в котором они были вставлены. Это правда в целом? Я ожидал, что значения будут напечатаны в случайном порядке.
API HashMap
не определяет порядок итерации.
Однако, если вы посмотрите на реализацию HashMap, вы можете сделать вывод, что существует сложная переходная связь между порядком итерации, значениями хеш-ключей, порядком, в котором ключи были вставлены, и размером хеш-таблицы. Эти отношения нарушаются, если хеш-таблица сама изменяет размер.
В вашем случае вы используете Integer
keys, что означает, что хеш-значения ключей являются самими значениями ключей. Кроме того, вы вставили записи в ключевом порядке. Это приводит (к счастью!) К порядку итераций, соответствующему порядку вставки. Но если вы продолжите вставлять больше ключей, вы обнаружите, что порядок итераций «оборачивается». Затем, когда таблица проходит серию изменений, порядок будет постепенно увеличиваться.
Короче говоря, то, что вы видите, является артефактом реализации хеш-таблицы, а не тем, что вы можете (или должны) разумно использовать. Не в последнюю очередь потому, что может измениться с одного выпуска Java на следующий.