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 都会针对 Map 中的所有条目进行更新。(实际上与计数器相同)我尝试将 put 语句更改为

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

无济于事。我感觉 HashMap 并没有创建 myClass 的副本来存储它,而是查看它在内存中的内容。如果我不想重新创建 myClass 并每次都重新填充它,有没有办法防止这种情况发生。在我的循环中使用“克隆”听起来很丑。

TIA

4

1 回答 1

2

您一遍又一遍地将同一个对象放入地图中 - 在循环内移动 MyClass 声明。

于 2012-10-18T23:39:01.680 回答