将while循环中的项添加到ArrayList java

时间:2011-01-02 21:55:31

标签: java list collections properties arraylist

这里很简单,我已连接到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是一个set属性,我使用表行值设置属性。

我有2行,包含以下数据

1疤脸 2头像

每次我在循环中运行ArrayList覆盖 1疤脸 2个阿凡达两次

我希望每次都向我的ArrayList添加一个新行 并且它不会覆盖

3 个答案:

答案 0 :(得分:12)

在循环中实例化DVDProperty。目前,您正在重用相同的实例,从而覆盖其属性:

while (res.next()) {
   DVDProperty context = new DVDProperty();
   ...
}

答案 1 :(得分:6)

您必须为每条记录创建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);
}

答案 2 :(得分:0)

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);
}