Frage

Ich bin mit einem Problem konfrontiert, die keine straighforward Lösung zu haben scheint.

Ich verwende java.util.Map, und ich möchte den Wert in einem Schlüsselwertpaar aktualisieren.

Gerade jetzt, ich mache es lik folgt aus:

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

So ist es eine Methode, so dass ich das erforderliche Entry Objekt bekommen kann, ohne durch die gesamte Map laufen zu müssen? Oder gibt es eine Möglichkeit, den Eintrag des Wertes an seinem Platz zu aktualisieren? Einige Verfahren in Map wie setValue(String key, int val)?

JRH

War es hilfreich?

Lösung

Mit

table.put(key, val);

einen neuen Schlüssel / Wert-Paar hinzuzufügen oder einen vorhandenen Schlüssel den Wert überschreiben.

Von der Javadocs:

  

V put (K-Taste, V-Wert): Ordnet den angegebenen Wert mit dem angegebenen Schlüssel in dieser Karte (optional Betrieb). Wenn die Karte vorher eine Zuordnung für den Schlüssel enthalten ist, wird der alte Wert durch den angegebenen Wert ersetzt. (Eine Karte m gesagt wird, eine Zuordnung für einen Schlüssel k enthalten, wenn und nur wenn m.containsKey (k) würde return true.)

Andere Tipps

Wenn Schlüssel vorhanden table.put(key, val) ist, wird nur den Wert überschreiben sonst wird es einen neuen Eintrag erstellen. Puh! und Sie sind fertig. :)

Sie können den Wert von einer Karte erhalten, indem Schlüssel ist table.get(key); Die etwa ist es

Sie benutzen Sie einfach die Methode

public Object put(Object key, Object value)

, wenn der Schlüssel ist bereits in der Karte dann der vorherige Wert zurückgegeben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top