gpt4 book ai didi

java - 清除已插入 HashMap 的对象

转载 作者:行者123 更新时间:2023-12-01 17:20:35 27 4
gpt4 key购买 nike

calls 是一个 arrayList,customerCalls 是一个 hashMap。我正在使用 Eclipse 进行调试,我发现 Calls.clear 清除了已插入 customerCalls Hashmap 中的 arrayList 对象。我很困惑,因为我认为一旦对象被提交到另一个数据结构,它就有一个独立的实体,除非我访问包含它的数据结构,否则无法对其进行任何操作。

我需要清除 arrayList 调用,以使其可用于一组新的调用,这些调用将专用于另一个合约,并稍后作为 HashMap 键(合约编号)的值插入。不清除它会累积所有调用,因为它将当前迭代添加到过去的迭代中。

>     if (callContractID.equals(currentContractID)==false){
> customerCalls.put(currentContractID, calls);
> currentContractID = callContractID;
> calls.clear();
> calls.add(call);
> count++;
> }
else {

calls.add(call);
}

最佳答案

将对对象 A 的引用传递给另一个对象绝不会改变 A(当然,除非另一个对象显式调用 A 上的方法来更改其状态)。它不会生成 A 的独立副本,或使 A 不可变,或类似的事情。

听起来您想要做的就是在完成第一个数组并将其提交到 map 后创建一个新的ArrayList

if (!callContractId.equals(currentContractID) {
calls = new ArrayList<Call>(); // or whatever the type is
// rest of your code...
}

这会将 calls 的值替换为对新的空 ArrayList 的引用,您可以向其中添加新元素。旧的 ArrayList 仍然可用于 HashMap,因为该映射有自己的第一个列表的引用副本。

关于java - 清除已插入 HashMap 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com