web-dev-qa-db-ja.com

Javaマップエントリの更新

私は簡単な解決策がないように見える問題に直面しています。

_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

69
jrharshath

つかいます

table.put(key, val);

新しいキー/値のペアを追加するか、既存のキーの値を上書きします。

Javadocsから:

V put(Kキー、V値):指定された値をこのマップ内の指定されたキーに関連付けます(オプションの操作)。マップに以前にキーのマッピングが含まれていた場合、古い値は指定された値に置き換えられます。 (マップmは、m.containsKey(k)がtrueを返す場合にのみ、キーkのマッピングを含むと言われます。)

151
skaffman

キーが存在する場合、table.put(key, val)は値を上書きするだけです。それ以外の場合は、新しいエントリが作成されます。失礼!これで完了です。 :)

キーis table.get(key);を使用してマップから値を取得できます

11
Priyank

method を使用するだけです

public Object put(Object key, Object value)

キーがすでにマップに存在していた場合、以前の値が返されます。

5
mkoeller