Обновление записи карты Java - PullRequest
68 голосов
/ 30 июня 2009

Я столкнулся с проблемой, которая, кажется, не имеет прямого решения.

Я использую 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)?

JRH

Ответы [ 3 ]

149 голосов
/ 30 июня 2009

Используйте

table.put(key, val);

для добавления новой пары ключ / значение или перезаписи существующего значения ключа.

Из Javadocs:

V put (ключ K, значение V): связывает указанное значение с указанным ключом в этой карте (необязательная операция). Если карта ранее содержала сопоставление для ключа, старое значение заменяется указанным значением. (Говорят, что карта m содержит отображение для ключа k тогда и только тогда, когда m.containsKey (k) вернет true.)

11 голосов
/ 30 июня 2009

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

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

5 голосов
/ 30 июня 2009

Вы просто используете метод

public Object put(Object key, Object value)

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

...