web-dev-qa-db-de.com

Aktualisieren eines Java Karteneintrags

Ich stehe vor einem Problem, das offenbar keine eindeutige Lösung bietet.

Ich verwende Java.util.Map Und möchte den Wert in einem Schlüssel-Wert-Paar aktualisieren.

Im Moment mache ich das so:

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

Gibt es also eine Methode, mit der ich das erforderliche Entry -Objekt abrufen kann, ohne das gesamte Map durchlaufen zu müssen? Oder gibt es eine Möglichkeit, den Wert des Eintrags zu aktualisieren? Eine Methode in Map wie setValue(String key, int val)?

jrh

69
jrharshath

Verwenden

table.put(key, val);

um ein neues Schlüssel/Wert-Paar hinzuzufügen oder den Wert eines vorhandenen Schlüssels zu überschreiben.

Aus den Javadocs:

V put (K-Taste, V-Wert): Ordnet den angegebenen Wert dem angegebenen Schlüssel in dieser Zuordnung zu (optionale Operation). Wenn die Zuordnung zuvor eine Zuordnung für den Schlüssel enthielt, wird der alte Wert durch den angegebenen Wert ersetzt. (Eine Zuordnung m soll genau dann eine Zuordnung für einen Schlüssel k enthalten, wenn m.containsKey (k) true zurückgeben würde.)

151
skaffman

Wenn die Taste vorhanden ist, überschreibt table.put(key, val) nur den Wert, ansonsten wird ein neuer Eintrag erstellt. Poof! und du bist fertig. :)

sie können den Wert von einer Karte abrufen, indem Sie die Taste table.get(key); drücken

11
Priyank

Verwenden Sie einfach die Methode

public Object put(Object key, Object value)

wenn der Schlüssel bereits in der Map vorhanden war, wird der vorherige Wert zurückgegeben.

5
mkoeller