2013-10-25 5 views
1

Скажем, у меня есть HashMap, как показано нижеУстройте HashMap в определенном порядке

Map<String,List<String>> nameMap = new HashMap<String,List<String>>(); 

Кроме того, я уже имеют следующие значения ключей в HashMap

Martin - 1 Юлия - 3 Эндрю - 2 Steve - 5

Теперь вопрос в том, что у меня есть определенный порядок, который мне нужен, чтобы хэш-карта удерживалась, и когда я распечатываю записи на карте, она должна печатать в том порядке, в котором я нуждаюсь.

заказ мне нужно

Юлия - 3 Андрей - 2 Стив - 5 Martin - 1

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

+2

В чем ваши критерии для заказа, если вы не объясните, это просто выглядит случайным для меня. – Marcelo

+1

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html «Этот класс не дает никаких гарантий относительно порядка карты, в частности, он не гарантирует, что заказ будет оставаться постоянным с течением времени ». Короче говоря, вы не хотите просто полагаться только на hashmap, чтобы получить определенный порядок. Вам нужно будет задействовать другие вещи. – Joe

+0

Вы не можете заказать HashMap - записи упорядочены в соответствии с хэш-значением ключа. – Paul

ответ

3

Поскольку HashMap является Unsorted, и потому, что не могут быть отсортированы в месте из-за способа, что он построен *, у вас есть два простых варианта здесь:

  • Создать LinkedHashMap, и заполнить его данными из вашего оригинала HashMap в нужном порядке, или
  • Вырезать временный список из keySet вашего HashMap, заказать его по желанию, а затем перебрать этот отсортированный набор и извлечь данные из исходного HashMap в желаемом порядке.
    HashMap записей размещены в «ведрах» в соответствии с их хеш-кодом, что очень произвольно.
0

HashMap неупорядочен. Вы можете использовать LinkedHashMap

0

HashMap - неупорядоченный ковер (элементы упорядочены хешем, и вы не можете положиться на это). Вы можете использовать TreeMap.

Смежные вопросы