Если вы модифицируете объект, полученный методом Map.get (K), объект не нужно повторно вставлять. Однако если вы измените ключ таким образом, что это повлияет на функцию hashCode (), вам нужно удалить запись карты перед изменением ключа, а затем вы можете вернуть свое значение, используя новый ключ.
Рассмотрим следующий случай повреждения карты:
Map<List<String>, String> map = new HashMap<List<String>, String>();
List<String> key1 = new ArrayList<String>();
key1.add("key1");
map.put(key1, "value1");
System.out.println(map.get(key1)); //prints "value1"
key1.add("buzz2");
System.out.println(map.get(key1)); //prints "null"
List<String> k = map.keySet().iterator().next();
System.out.println(map.get(k)); //prints "null"
Мораль истории: для карт всегда используйте неизменяемые ключи, такие как String или int.