Два варианта:
Параметр 1
Текущий унаследованный код удаляет данную запись и добавляет ее обратно после внесения некоторых изменений.в POJO.
Вы меняете ссылку на POJO?Например, поэтому вход указывает на что-то еще целиком?Потому что, если нет, вам вообще не нужно удалять его с карты, вы можете просто изменить его.
Вариант 2
Если вам сделать нужно действительно изменитьссылаясь на POJO (например, значение записи), вы все равно можете сделать это на месте, перебирая экземпляры Map.Entry
из entrySet()
.Вы можете использовать setValue
для записи, которая не изменяет то, что вы перебираете.
Пример:
Map<String,String> map;
Map.Entry<String,String> entry;
Iterator<Map.Entry<String,String>> it;
// Create the map
map = new HashMap<String,String>();
map.put("one", "uno");
map.put("two", "due");
map.put("three", "tre");
// Iterate through the entries, changing one of them
it = map.entrySet().iterator();
while (it.hasNext())
{
entry = it.next();
System.out.println("Visiting " + entry.getKey());
if (entry.getKey().equals("two"))
{
System.out.println("Modifying it");
entry.setValue("DUE");
}
}
// Show the result
it = map.entrySet().iterator();
while (it.hasNext())
{
entry = it.next();
System.out.println(entry.getKey() + "=" + entry.getValue());
}
Вывод (в произвольном порядке):
Посещение двух
Изменение его
Посещение одного
Посещение трех
два = DUE
one = uno
three = tre
... без исключения модификации.Возможно, вы захотите синхронизировать это в случае, если что-то еще просматривает / удаляет эту запись.