Итерирование HashMap по порядку, которое было установлено

Я установил HashMap в определенном порядке, но он повторяется в странном порядке!

Пожалуйста, рассмотрите следующий код:

HashMap<String, String> map = new HashMap<String, String>();
map.put("ID", "1");
map.put("Name", "the name");
map.put("Sort", "the sort");
map.put("Type", "the type");

...

for (String key : map.keySet()) {
    System.out.println(key + ": " + map.get(key));
}

и результат:

Name: the name
Sort: the sort
Type: the type
ID: 1

Мне нужно выполнить итерацию, чтобы я поместил записи. Любая помощь будет оценена.

Ответ 1

Порядок зависит от результата функции hashCode() в ключах, которые вы вставляете, которые, если вы не сделали что-то странное, будут в основном случайными (но непротиворечивыми). То, что вы ищете, - это отсортированная карта, такая как LinkedHashMap

Узнайте немного о том, как hashtables работают здесь, если вас интересуют детали.

Ответ 2

То, как HashMap работает внутри. Замените HashMap на LinkedHashMap, который дополнительно запоминает порядок вставки:

Map<String, String> map = new LinkedHashMap<String, String>();