Итерирование 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>();