0

一部のクラスを格納するために HashMap を使用しようとしています。これが私の簡略化されたコードのビューです。

HashMap<Integer, MyClass> map = new HashMap<Integer, MyClass>
MyClass myClass = new MyClass();
for (int i = 0; i<MAX;i++){
    myClass.counter=i;
    map.put(i, myClass);
    myClass.modifySomeInternalParameters(i);
    myClass.anotherCounter+(i*2);
}

最後のステートメントに到達するたびに、マップ内のすべてのエントリに対して anotherCounter が更新されます。(実際にはカウンターも同じです)putステートメントを次のように変更してみました

map.put(i, new MyClass (myClass));

無駄に。HashMap は myClass のコピーを作成して保存するのではなく、メモリ内のコンテンツを参照しているように感じます。myClass を再作成して毎回再作成したくない場合、これを防ぐ方法はありますか。私のループで 'Clone' を使用するのは見苦しく聞こえます。

ティア

4

1 に答える 1

2

同じオブジェクトをマップに何度も入れています - MyClass 宣言をループ内に移動します。

于 2012-10-18T23:39:01.680 に答える