Добавление элементов из цикла while в Java-массив ArrayList - PullRequest
2 голосов
/ 03 января 2011

Здесь все просто, я подключился к sqldb, и из своей базы данных я извлекаю строки из таблицы.

Для каждой строки я хочу сохранить данные в ArrayList.Каждая строка является элементом в ArrayList.

. Это то, что я имею до сих пор.

List<DVDProperty> DVDList = new ArrayList<DVDProperty>();

DVDProperty context = new DVDProperty();

while (res.next()) {
    int i = res.getInt("idnew_table");
    String s = res.getString("dvdName");

    context.setDVDId(i);
    context.setDVDName(s);

    DVDList.add(context);
}

DVDPropery - это свойство набора, в котором я устанавливаю свойства для строки таблицы.значения.

У меня есть 2 строки со следующими данными

1 Scarface
2 Аватар

Каждый раз, когда я пробегаю по циклу, мой ArrayList переопределяет 1 Scarface с 2Аватар дважды

Я хочу добавлять новую строку в мой ArrayList каждый раз, и он не отменяет

Ответы [ 3 ]

12 голосов
/ 03 января 2011

Создание DVDProperty внутри цикла. В настоящее время вы повторно используете тот же экземпляр и переопределяете его свойства:

while (res.next()) {
   DVDProperty context = new DVDProperty();
   ...
}
6 голосов
/ 03 января 2011

Вы должны создать новый объект типа DVDProperty для каждой записи. В это время вы меняете один и тот же объект (контекст) в каждой итерации. Попробуйте:

List<DVDProperty> DVDList = new ArrayList<DVDProperty>();
while (res.next()) {
    int i = res.getInt("idnew_table");
    String s = res.getString("dvdName");
    DVDProperty context = new DVDProperty();
    context.setDVDId(i);
    context.setDVDName(s);
    DVDList.add(context);
}
0 голосов
/ 26 мая 2015
Please create new instance of the DVDProperty object in loop everytime it runs the loop.
Please refer to code snippet below.

Code
List<DVDProperty> DVDList = new ArrayList<DVDProperty>();
DVDProperty context = null;
while (res.next()) {
    int i = res.getInt("idnew_table");
    String s = res.getString("dvdName");
    context = new DVDProperty();
    context.setDVDId(i);
    context.setDVDName(s);
    DVDList.add(context);
}
...