web-dev-qa-db-ja.com

「put」は既存の値を上書きしますか?

簡単な質問を含むハッシュテーブルの新機能。なんらかの理由で、グーグルは私に直接の答えをもたらしてくれませんでした。たとえば、<int,String>ハッシュテーブルのセットアップ:

myHashtable.put(1,"bird");
myHashtable.put(2,"iguana");

「鳥」を「魚」に変更します(そして、インデックスは同じままにします)。単純なputを実行できますか、またはエントリを削除する必要がありますか、それとも何ですか?

67
Ben

はい。

指定されたキーへのマッピングが既に存在する場合、古い値は置き換えられます(返されます)。 Hashtable.put() を参照してください。

マルチスレッド環境では、 ConcurrentHashMap または別のConcurrentMap実装をお勧めします。 Hashtableは同期されますが、Guavaの MapMakerCacheBuilder など、より高度な実装が並行マッピングに利用できるようになりました。 =。

また、Mapには型パラメーター<Integer, String>プリミティブ型パラメーターはサポートされていないため。

80
Paul Bellora

うーん、ちょうど行を追加する必要があります
myHashtable.put(1,"fish");
驚くべきことが起こるのを見る

このリンクを参照してください: http://docs.Oracle.com/javase/6/docs/api/Java/util/Hashtable.html#put(K、V)

Returns:
the previous value of the specified key in this hashtable, or null if it did not have one
4
JessonChan