gpt4 book ai didi

java - 使用 Arraylist addAll() 创建一个新列表,其中包含具有不同引用的新对象

转载 作者:行者123 更新时间:2023-12-01 14:01:12 24 4
gpt4 key购买 nike

我想将两个数组列表合并为一个新的数组列表,并迭代该列表。在对新数组列表执行操作之前,我想将某些值乘以 -1。然而问题是,当使用 addAll() 时,我还乘以旧的数组列表。

public Polynoom subtract (Polynoom that) {
Polynoom subtract = new Polynoom();
subtract.termen.addAll(that.termen);
for (int i = 0; i < subtract.termen.size(); i++) {
subtract.termen.get(i).coef = subtract.termen.get(i).coef * -1;
}
subtract.termen.addAll(this.termen);
Collections.sort(subtract.termen);
subtract.removeDoubles();
return subtract;

}

我的 Polynoom 类如下所示:

   class Polynoom implements PolynoomInterface {


ArrayList<Paar> termen = new ArrayList<Paar>();

Polynoom() {
termen = new ArrayList<Paar>();
}
}

问题是(我认为):当使用 addAll() 时,它会创建 REFERENCES 而不是新副本,因此更改元素将同时更改两者。克服这个问题的好方法是什么?

我当然可以创建一个新的对而不是 Polynoom 并将其添加到一个新的 Polynoom 中,但我认为这不是很好的代码。有人有更好的主意吗?

最佳答案

试试这个

subtract.termen = new ArrayList<Paar>(that.termen);

在循环之前并删除 subract.termen.addall();

或者你可以创建新对象

ArrayList <Paar> temp = new ArrayList<Paar>(that.termen);
subtract.termen.addAll(temp);

关于java - 使用 Arraylist addAll() 创建一个新列表,其中包含具有不同引用的新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19337994/

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