java - 如何将 HashMap 复制到具有不同引用的 ArrayList

标签 java object reference arraylist hashmap

我在 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/

相关文章:

Java - JTable 默认选择第一列

java - Dagger 2 - 如果没有 @Provides 注释的方法则无法提供

java - 监控数据库 : MySQL

Javascript:返回对象内数组的第一个值

c++ - 为什么我不需要检查引用是否无效/空?

java - 即时时间戳与 Spring Boot 3 结合 PostgreSQL 失败

javascript - 如何将对象数组转换为 Lodash 中的对象?

java - 使用对象克隆的正确方法是什么?

Javascript创建未知维度大小的数组

python - 私有(private)变量和类局部引用