В приведенном ниже примере я добавляю элементы в обычный ArrayList, а затем в настраиваемый ArrayList. В то время как первый работает отлично, добавляя каждый элемент в ArrayList, как ожидалось, последнее только, кажется, перезаписывает добавленные элементы.Добавление элементов в стандартный или настроенный ArrayList
Не могли бы вы объяснить, что здесь происходит и как это исправить?
package jExample;
import java.util.ArrayList;
public class ForLoopArrayList {
public static void main(String[] args) {
// customized ArrayList
ArrayList<CDatabase> box = new ArrayList<>();
// standard ArrayList
ArrayList<String> var1 = new ArrayList<>();
ArrayList<String> var2 = new ArrayList<>();
CDatabase recBox = new CDatabase();
for(int i = 0; i < 9; i++){
// populating customized ArrayList
recBox.var1 = i * 1.1;
recBox.var2 = i * 11.;
box.add(recBox);
// populating standard ArrayList
var1.add(Double.toString(i * 1.1));
var2.add(Double.toString(i * 11.));
}
for(int i = 0; i < var1.size(); i++){
CDatabase test = box.get(i);
System.out.println(var1.get(i) + " " + var2.get(i) + " " + test.var1);
}
System.out.println(var1.size());
System.out.println(box.size());
}
}
Используя следующий CDatabase класс:
package jExample;
public class CDatabase {
public double var1;
public double var2;
}
Вы продолжаете перезаписывать свой объект базы данных, вместо этого попробуйте создать новый объект. – Ceelos
Возможный дубликат [Почему мой ArrayList содержит N копий последнего элемента, добавленного в список?] (Http://stackoverflow.com/questions/19843506/why-does-my-arraylist-contain-n-copies-of -the-last-item-added-to-the-list) – Andreas
* FYI: * 'ArrayList' больше не «настроен», чем 'ArrayList '. Они являются стандартными ArrayLists. Настройка «ArrayList» означает изменение способа работы * списка *. –
Andreas