我在 Java 中的对象引用方面遇到问题。情况是这样的。
假设我有一个名为 MyObject 的对象类。
class MyObject {
Long id;
String item;
Integer number;
BigDecimal bigNumber;
//and Some getter and setter methods
}
假设我有 HashMap :
HashMap<Long, MyObject> myHash = new HashMap<Long, MyObject>();
我用 MyObject 的一些对象填充这个 HashMap 。
然后,当我尝试将此 HashMap 的所有元素复制到 arrayList (使用 addAll 方法)时, HashMap 中包含的所有对象都将复制到具有相同引用的数组列表。因此,当我尝试更改 hashmap 中的 MyObject 对象时,它也会在 arrayList 中更改。我不想要这样。我该如何防止这种情况发生?
我希望我能清楚地说出问题。
提前致谢。
最佳答案
目前您只是复制引用文献。这样做是因为复制对象的成本非常昂贵。
在您的情况下,您想要复制对象,因此在将它们添加到列表时需要复制每个对象。类似的东西
for(MyObject mo: myHash.values())
list.add(mo.copy());
您可以通过多种方式实现复制,包括使用clone();
关于java - 如何将 HashMap 复制到具有不同引用的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499970/