gpt4 book ai didi

java - 循环元素 ArrayLists 元素的 ArrayList 被更改为最后一个循环值

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

我无法弄清楚为什么“ALofcompoundedPrimeAL”(ArrayList 的 ArrayList)中的每个元素最终都相同。因此,虽然 ArrayList“theNewPrimeFactorsAL”看起来是正确的,但 for 循环的每次迭代似乎都会将 ALofcompoundedPrimeAL 的所有元素更改为最新迭代的元素;也就是说 ALofcompoundedPrimeAL 不会索引唯一元素,而是将每个元素更改为最后一次循环迭代的值。另外,我会使用正确的工具来存储集合吗?重要的是,我可以计算迭代之间素因数的数量,因此不能仅仅用可能的新素因数创建一个新集合。

我发现了这个:link这显然有效,但似乎无法让循环不将 ALofcompoundedPrimeAL 中的每个元素更新为最后一次迭代的值。

public ArrayList<ArrayList<Integer>> CompoundDivisors(
ArrayList<Set<Integer>> SetofallPrimeFactorsAL) {

Set<Integer> PrimeFactorsSET;
ArrayList<Integer> theNewPrimeFactorsAL = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> ALofcompoundedPrimeAL = new ArrayList<ArrayList<Integer>>();

ArrayList<Integer> thePrimeFactorsAL;
for (int k = 0; k < SetofallPrimeFactorsAL.size(); k++) {
PrimeFactorsSET = SetofallPrimeFactorsAL.get(k);
// PrimeFactorsAL takes the set of Prime Factors (in
// PrimeFactorsSET) and outputs an arraylist of them.
thePrimeFactorsAL = new ArrayList<Integer>(PrimeFactorsSET);
// theNewPrimeFactorsAL.addAll just adds all of the new elements to
// the theNewPrimeFactorsAL ArrayList.
theNewPrimeFactorsAL.addAll(thePrimeFactorsAL);
// ALofcompoundedPrimeAL is supposed to add theNewPrimeFactorsAL to
// each index.
ALofcompoundedPrimeAL.add(theNewPrimeFactorsAL);
}
return (ALofcompoundedPrimeAL);
}

感谢您的见解。

最佳答案

看来你只是复制引用文献。例如,将 theNewPrimeFactorsAL 添加到 ALofcompoundedPrimeAL 后,您可以在下一个循环中将 addAll 添加到同一个 theNewPrimeFactorsAL 。最后,ALofcompoundedPrimeAL 包含对同一theNewPrimeFactorsALn 个引用,该引用保存在循环的任何迭代中添加到其中的所有元素。

您需要创建新列表才能拥有新列表。

关于java - 循环元素 ArrayLists 元素的 ArrayList 被更改为最后一个循环值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925988/

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