gpt4 book ai didi

java - java中重用变量的问题

转载 作者:行者123 更新时间:2023-12-01 19:15:53 27 4
gpt4 key购买 nike

我在 java 中引用分配时遇到了一些问题。
让我解释一下:在我的代码中,我使用 BooleanWrap (一个自制的 boolean 类)的 ArrayList,稍后将其指定为 HashMap 中的值(有一个 for 循环,它更新此 ArrayList 的值,直到条件已验证)。
像这样的事情:

 ArrayList<BooleanWrap> temp=new ArrayList <BooleanWrap>(48);

//cycle: operations to fill the ArrayList, then a condition is satisfied

hashMap.put(index, temp);

之后,我必须重用临时变量,因此我需要重新初始化它。我按照以下说明进行操作:

for(BooleanWrap bool: temp){
bool.set(false);
}

我的问题来了:将 temp 指定为 hashMap 的值只会保存变量的引用,而不是实际值。
因此,重新初始化 temp 也会导致 hashmap 内部的更新(在本例中,将所有内容设置为 false)。
现在,我认为即使使用 clone() 方法,我也应该得到相同的结果(因为它生成 ArrayList 的浅拷贝)。
有没有办法在我的循环中重用相同的变量 temp,而无需稍后将其引用分配给 HashMap ?
实际上我可以使用创建数组列表深拷贝的方法来做到这一点:

public static ArrayList<BooleanWrap> deepcopy(ArrayList<BooleanWrap> original){

ArrayList<BooleanWrap> copy=new ArrayList<BooleanWrap>(48);
for(BooleanWrap bool: original)
copy.add(new BooleanWrap (bool.get()));

return copy;

}

但我需要内联完成一些事情,不需要任何其他方法,并且尽可能短。

有什么建议/建议/侮辱吗?

最佳答案

问题与无关变量有关。它是关于对象和它们的变异

因此根据需要创建一个新对象。 “问题”是存储在 HashMap 中的原始对象正在发生变异

但是,避免重复使用变量可以(通常吗?)使代码更易于维护和理解。

祝你编码愉快。

关于java - java中重用变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714098/

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