Я ищу способ переименования ключа Hashmap, но я не знаю, возможно ли это на Java.Можно ли переименовать ключ Hashmap?
ответ
Попробуйте удалить элемент и поместить его снова с новым именем. Если предположить, что ключи в вашей карте будут String
, это может быть достигнуто таким образом:
Object obj = map.remove("oldKey");
map.put("newKey", obj);
+1. Проще всего читать «map.put» («newKey», map.remove («oldKey»)); и содержит «oldKey» –
Что касается удобочитаемости, я совершенно не согласен, я лично предпочитаю ясно видеть, что объект удаляется с карты, а затем добавляется. И поскольку OP, похоже, довольно нова для Java, я решил это сделать. Однако, ради производительности, ваша версия, конечно, предпочтительна (так как я не думаю, что компилятор будет оптимизировать мою версию на вашем пути). –
Для javac 1.8.0_45 однострочная версия имеет два байткода короче, что меня удивило. Более раздражающе с дженериками вы не можете передать 'obj'' put', не отбрасывая его или объявляя его как другой тип, но, конечно, передача результата 'remove' напрямую работает. –
Вы не переименовываете ключ hashmap, вам нужно вставить новую запись с новым ключом и удалить старый.
Присвоить значение ключа, который нужно переименовать, с новым ключом. И удалите старый ключ.
hashMap.put("New_Key", hashMap.get("Old_Key"));
hashMap.remove("Old_Key");
Вы не можете переименовать/изменить HashMap ключ раз добавил.
Только способ удалить/удалить ключ и вставить новую пару ключей и значений.
Причина: В Hashmap внутренней реализации модификатор ключ Hashmap отмечен как окончательный.
static class Entry<K ,V> implements Map.Entry<K ,V>
{
final K key;
V value;
Entry<K ,V> next;
final int hash;
...//More code goes here
}
Справочно: HashMap
hashMap.put("New_Key", hashMap.remove("Old_Key"));
Это будет делать то, что вы хотите, но вы заметите, что местоположение ключа изменилось.
@Vins снова просмотрите документацию, пожалуйста: D, remove() вернется объект, проверьте этот https://www.tutorialspoint.com/java/util/hashmap_remove.htm –
мой плохой, я удалил свой комментарий и проголосовал за него. Извини за это. – Vins
- 1. Можно ли переименовать ArrayList?
- 2. Можно ли переименовать $ target_path?
- 3. Можно ли переименовать Main.mxml?
- 4. Можно ли переименовать SKPayment.applicationUsername?
- 5. Можно ли переименовать ключ в базу данных реального времени Firebase?
- 6. Можно ли изменить ключ/значение HashMap во время итерации?
- 7. Можно ли переименовать svn-тег
- 8. Mercurial: Можно ли переименовать ветку?
- 9. Можно ли переименовать подстроку qt?
- 10. Можно ли переименовать папку Areas?
- 11. Можно ли переименовать файл Gruntfile.js?
- 12. Переименовать UITextView Обратный ключ
- 13. переименовать ключ возврата Готово
- 14. JavaScript: Object Переименовать ключ
- 15. Переименовать ключ словаря
- 16. HashMap Object ключ
- 17. android.util.Pair как ключ в HashMap
- 18. Строки как ключ в Hashmap
- 19. Переименовать ключ в объекте
- 20. Можно ли установить ключ NSMutableDictionary под ключ?
- 21. Пользовательский ключ для HashMap
- 22. Первый ключ HashMap: null
- 23. Hashmap содержит ключ
- 24. Извлечь ключ из HashMap
- 25. Можно ли переименовать представление в CCRC
- 26. Можно ли переименовать элемент в ngRepeat
- 27. Можно ли переименовать и скопировать сборку?
- 28. Можно ли переименовать целую «директорию ветвей»?
- 29. Можно ли переименовать java-зависимости из maven?
- 30. Можно ли переименовать имя моего царства?
Гош, надеюсь, нет. Удаление и повторное включение пары ключ/значение похоже на путь. Обратите внимание, что вы обычно просто обрабатываете ссылки на самой карте. –
Пожалуйста, не изменяйте ключ записи хэша! Если вам повезет, вы измените его на что-то с тем же хэш-кодом, и вы просто сходите с ума, пытаясь выяснить, что произошло; если вам не повезло, вы получите запись, которая не может быть найдена (ну, пока не будет следующей перестройки всей таблицы). Remove/reinsert намного эффективнее, и должно быть довольно дешево (все-таки все ссылки). –