Я не могу понять, почему каждый элемент в «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);
}
Спасибо за любое понимание.