Вопрос по java, hashmap – Как сохранить порядок вставки в HashMap? [Дубликат]

424

This question already has an answer here:

Java Class that implements Map and keeps insertion order? 8 answers

Я используюHashMap, Когда я перебираю карту, данные возвращаются в (часто одинаковом) случайном порядке. Но данные были вставлены в определенном порядке, и мне нужно сохранить порядок вставки. Как я могу это сделать?

Ваш Ответ

2   ответа
61

HashMap неупорядочен по второй строке документации:

This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.

Возможно, вы можете сделать, как предлагает AIX, и использоватьLinkedHashMapили другой заказанный сборник.Эта ссылка может помочь вам найти наиболее подходящую коллекцию для использования.

927

LinkedHashMap это именно то, что вы ищете.

Это в точности какHashMapза исключением того, что когда вы перебираете его, он представляет элементы в порядке вставки.

Это делает использованиеjava.util.Comparator<T> сjava.util.Collections.sort() явно не нужно и спасибо за предоставление очень полезной информации.
в соответствии с Java-документа он говорит: Этот связанный список определяет порядок итераций, который обычно является порядком, в котором ключи были вставлены в карту. & # xBF; & # xBF; & # xBF; & # xBF; & # xBF; ОБЫЧНО ????? что это значит? вставка заказа не является гарантией ....
@Xenione: Вы можете выбирать между порядком вставки и порядком доступа. Смотрите последний аргументbit.ly/1jZXlCl
@Xenione [Обратите внимание, что порядок вставки не изменяется, если ключ повторно вставлен в карту], когда ключ вставляется дважды, второй раз не меняет порядок, поэтому порядок повторения не совсем соответствует порядку вставки из-за уникальности ключи; обычно означает, что если ключи уникальны
конструкторы дают «порядок вставки»; Карта, но конструктор (int, float, boolean), если третий аргумент имеет значение true, позволяет создать & quot; порядок доступа & quot; LinkedHashMap в этом случае вызов get будет влиять на порядок, к которому сначала обращаются меньше всего

Похожие вопросы