2012-01-26 17 views
1

get(<key>)という方法でハッシュマップから要素を抽出し、抽出した要素を更新すると、これらの更新はマップに残っていますか?または、要素をハッシュマップに再度挿入する必要がありますか?ハッシュマップから要素を抽出して更新する

+1

これは自分でテストするのが簡単ではありませんか? – CoolBeans

+0

私はコミュニティからの確認があります – Mazzy

答えて

5

あなたはこのようなあなたが外に出たオブジェクトのフィールドを、変更した場合は...

Thing thing = map.get(key); 
thing.setOtherThing(yetAnotherThing); 

そのマップ内の値を更新します。一方

、あなたがマップの外に値を取得することによって得られた基準を変更した場合...

Thing thing = map.get(key); 
thing = doSomethingWith(thing); 

、あなたがマップにそれを戻す必要があります。

0

Map.get(K)メソッドで取得したオブジェクトを変更した場合、オブジェクトを再挿入する必要はありません。ただし、hashCode()関数が影響を受けるようにキーを変更する場合は、キーを変更する前にマップエントリを削除してから、新しいキーを使用して値を戻す必要があります。物語の

Map<List<String>, String> map = new HashMap<List<String>, String>(); 

List<String> key1 = new ArrayList<String>(); 
key1.add("key1"); 

map.put(key1, "value1"); 
System.out.println(map.get(key1)); //prints "value1" 

key1.add("buzz2"); 
System.out.println(map.get(key1)); //prints "null" 

List<String> k = map.keySet().iterator().next(); 
System.out.println(map.get(k)); //prints "null" 

士気:

は、次のマップの破損のケースを考えてみましょマップするために、常に文字列またはint型のような不変のキーを使用します。

関連する問題