Обновление записи карты Java
Вопрос
Я столкнулся с проблемой, которая, кажется, не имеет однозначного решения.
я использую java.util.Map
, и я хочу обновить значение в паре «ключ-значение».
Сейчас я делаю это так:
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)
?
джрх
Решение
Использовать
table.put(key, val);
чтобы добавить новую пару ключ/значение или перезаписать существующее значение ключа.
Из Javaдокументации:
V put (ключ K, значение V):Связывает указанное значение с указанным ключом в этой карте (необязательная операция).Если карта ранее содержала сопоставление ключа, старое значение заменяется указанным значением.(Говорят, что карта m содержит отображение для ключа k тогда и только тогда, когда m.containsKey(k) возвращает true.)
Другие советы
Если ключ присутствует table.put(key, val)
просто перезапишет значение, иначе создаст новую запись.Пуф!и все готово.:)
вы можете получить значение с карты, используя ключ table.get(key);
Вот и все
Вы просто используете метод
public Object put(Object key, Object value)
если ключ уже присутствовал на карте, возвращается предыдущее значение.