如何在不影响原始对象值的情况下创建哈希映射对象的副本

时间:2019-12-19 07:29:14

标签: java object hashmap

我试图制作一个哈希图对象并从另一个哈希图分配它的值,但是我发现副本上的更改影响了原始对象的值

如何使副本不影响原件?

这是我的代码

(input[0] == 'P' && input[1] == '\0')

3 个答案:

答案 0 :(得分:5)

使用复制构造函数:

HashMap<Integer, Integer> OfferLimitsForCalculations = new HashMap<>(productOfferLimitsForCart);

进行分配时

OfferLimitsForCalculations = productOfferLimitsForCart;

两个变量都引用相同的HashMap实例(并且Map所引用的原始OfferLimitsForCalculations不再被任何变量引用)。

答案 1 :(得分:2)

您可以使用putAll()函数放置现有地图中的所有条目。

HashMap<Integer, Integer> productOfferLimitsForCart = new HashMap<>();
productOfferLimitsForCart .put(Integer.valueOf(liveModel.getId()), 0);

HashMap<Integer, Integer> OfferLimitsForCalculations = new HashMap<>();
OfferLimitsForCalculations.putAll(productOfferLimitsForCart);

答案 2 :(得分:2)

这不是您要创建的副本。您只是为其分配了第二个名称。

您可以通过调用OfferLimitsForCalculations.putAll(productOfferLimitsForCart);

创建燕子副本

这将创建一个新地图,但其中包含相同的对象。因此,如果对一个地图内的对象进行操作,则仍在更改第二个地图的内容。但是仅使用整数,这应该不是问题,因为通常整数实际上是最终的。