Actualizar una entrada de mapa de Java
Pregunta
estoy frente a un problema que parece no tener solución straighforward.
Estoy usando java.util.Map
, y quiero actualizar el valor en un par clave-valor.
En este momento, lo estoy haciendo lik esto:
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;
}
}
}
Entonces, ¿hay algún método para que pueda obtener el Entry
objeto deseado sin tener que recorrer todo el Map
? ¿O hay alguna manera de actualizar el valor de la entrada en su lugar? Algún método en setValue(String key, int val)
como <=>?
JRH
Solución
Uso
table.put(key, val);
para añadir un nuevo par clave / valor o sobrescribir un valor de clave existente.
Desde el Javadocs:
V put (clave K, el valor V): Asocia el valor especificado con la clave especificada en este mapa (operación opcional). Si el mapa previamente contenía una asignación para la tecla, el valor antiguo se sustituye por el valor especificado. (Un mapa m se dice que contiene una asignación para una clave k si y sólo si m.containsKey (k) volvería cierto.)
Otros consejos
Si la clave está presente table.put(key, val)
simplemente se sustituye el valor de otra cosa que va a crear una nueva entrada. ¡Maricón! y ya está. :)
se puede obtener el valor de un mapa utilizando la clave es table.get(key);
Eso es todo
sólo tiene que utilizar el método
public Object put(Object key, Object value)
Si la tecla ya estaba presente en el mapa a continuación, se devuelve el valor anterior.