Казалось бы, вы хотите, чтобы порядок ключей HashMap
был таким же, как ваш отсортированный список ключей. Это просто невозможно . Ключи HashMap
s определяются алгоритмами хэш-таблицы; например сложный процесс, который зависит от хеш-значений ключей и последовательности вставок и удалений.
Самое близкое, что вы получите, - это создать LinkedHashMap
и заполнить его, вставив записи из старого HashMap
в порядке отсортированных ключей. Если затем вы перебираете ключи LinkedHashMap
, вы получите их обратно в том порядке, в котором они были вставлены. Но это тяжелое решение, и оно выходит из строя, если впоследствии вам нужно будет добавить больше записей на «отсортированную» карту. Может быть лучше просто использовать TreeMap
.
Я не хочу вносить изменения в hashmap. Я просто хочу получить массив с ключами в порядке отсортированных значений.
В этом случае вам просто нужно извлечь ключи HashMap в массив и отсортировать его. Код был дан в других ответах.
С другой стороны, если вы хотите что-то сделать так, чтобы ключи карты всегда появлялись в отсортированном порядке (о чем вы говорите в других комментариях), вы меняете карту.