Положите ключи в hashmap и получите в том же порядке - PullRequest
2 голосов
/ 07 июля 2011

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

String[] folders={"Movies/HD/By Genre/Action","Movies/HD/By Genre/Comedy"};
HashMap<String, String> sdsResults = new HashMap<String, String>();

for(int i=0; i<folders.length; i++){
    sdsResults.put(folders[i], null);
}

Iterator<String> itr = sdsResults.keySet().iterator();
while(itr.hasNext()){
    System.out.println("keys in map are = "+itr.next());
}

Вывод -

keys in map are = Movies/HD/By Genre/Comedy
keys in map are = Movies/HD/By Genre/Action

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

Может кто-нибудь объяснить, почему это так?И я хочу, чтобы порядок был таким же, как содержимое папки.Как мне этого добиться?

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

LinkedHashMap должен решить проблему заказа. Подобный вопрос и ответ здесь Порядок значений, извлеченных из HashMap

1 голос
/ 07 июля 2011

Порядок ключей в хэше не определен.Вы хотите карту. Вот сравнение внутренних элементов.

По сути, когда вы помещаете что-то в хеш, вы шифруете ключ.Это односторонняя функция . вся точка является то, что вы не можете отменить это сделать. - это способ положить 100 вещей в 10 коробок

0 голосов
/ 29 сентября 2015

Вы можете использовать ListOrderedMap из библиотеки Apache's Commons-Collection, чтобы сохранить порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...