web-dev-qa-db-fra.com

Mise à jour d'une entrée de carte Java

Je suis confronté à un problème qui ne semble pas avoir de solution directe.

J'utilise Java.util.Map Et je souhaite mettre à jour la valeur d'une paire clé-valeur.

En ce moment, je le fais comme ceci:

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;
        }
    }
}

Donc, y a-t-il une méthode pour obtenir l'objet Entry requis sans avoir à parcourir l'ensemble Map? Ou y a-t-il un moyen de mettre à jour la valeur de l'entrée en place? Une méthode dans Map comme setValue(String key, int val)?

jrh

69
jrharshath

Utilisation

table.put(key, val);

pour ajouter une nouvelle paire clé/valeur ou écraser la valeur d'une clé existante.

Des Javadocs:

V put (clé K, valeur V): associe la valeur spécifiée à la clé spécifiée dans cette mappe (opération facultative). Si la carte contenait précédemment un mappage pour la clé, l'ancienne valeur est remplacée par la valeur spécifiée. (On dit qu'une carte m contient une correspondance pour une clé k si et seulement si m.containsKey (k) renverrait true.)

151
skaffman

Si key est présent, table.put(key, val) écrasera simplement la valeur, sinon il créera une nouvelle entrée. Pouf! et vous avez terminé. :)

vous pouvez obtenir la valeur d'une carte en utilisant la clé est table.get(key); c'est à peu près tout

11
Priyank

Vous venez d'utiliser la méthode

public Object put(Object key, Object value)

si la clé était déjà présente dans la carte, la valeur précédente est renvoyée.

5
mkoeller