2009-06-30 3 views
62

У меня возникла проблема, которая, похоже, не имеет решения для решения проблем.Обновление записи на карте java

Я использую java.util.Map, и я хочу обновить значение в паре Key-Value.

Прямо сейчас, я это делаю Лик это:

private Map<String,int> table = new HashMap<String,int>(); 
public void update(String key, int val) { 
    if(!table.containsKey(key)) return; 
    Entry<String,int> entry; 
    for(entry : table.entrySet()) { 
     if(entry.getKey().equals(key)) { 
      entry.setValue(val); 
      break; 
     } 
    } 
} 

Так есть ли способ, чтобы я мог получить необходимую Entry объект без перебора всей Map? Или есть способ обновить значение записи на месте? Некоторый метод в Map, как setValue(String key, int val)?

JRH

+0

PS: его table.entrySet(). Я набрал это неправильно. – jrharshath

+0

Вы можете удалить первый оператор «if». Он по-прежнему вызывает полную итерацию по карте, если ключ отсутствует. Если вы удалите его, вы по-прежнему будете перебирать всю карту и ничего не выполнять, если ключ отсутствует. Прямо сейчас, если ключ присутствует, вы перебираете по карте, находите, что она присутствует, а затем снова итерации через записи. –

ответ

136

Что случилось только с

table.put(key, val); 

?

+3

ключ уже существует. это будет проблема? – jrharshath

+42

Нет, старое значение для этого ключа будет перезаписано. – skaffman

+2

о, круто. Хотелось бы, чтобы это было сказано где-то в документах. Возможно, я не читал правильно. – jrharshath

5

Вы просто использовать method

public Object put(Object key, Object value) 

если ключ уже присутствует в карте, то предыдущее значение возвращается.

11

Если присутствует ключ table.put(key, val), он просто перезапишет значение, иначе он создаст новую запись. Пуф! и все готово. :)

вы можете получить значение из карты с помощью ключа является table.get(key); Именно об этом

Смежные вопросы