我正在尝试使用 HashMap 来存储一些类。 这是我的简化代码的 View 。
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);
}
每当我到达最后一条语句时,另一个计数器就会更新映射中的所有条目。 (实际上柜台也一样) 我尝试将 put 语句更改为
map.put(i, new MyClass (myClass));
无济于事。 我的感觉是,HashMap 不会创建 myClass 的副本来存储它,而是查看其在内存中的内容。如果我不想重新创建 myClass 并每次重新填充它,有没有办法防止这种情况。 在我的循环中使用“克隆”听起来很难看。
TIA
最佳答案
您一遍又一遍地将相同的对象放入映射中 - 将 MyClass 声明移动到循环内。
关于java - HashMap 和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12965317/