Object Array add仅添加最后一条记录

时间:2013-04-25 17:38:44

标签: java object arraylist

我正在尝试将一个对象添加到一个arraylist。

该对象定义为:

ExercisesGroup group = new ExercisesGroup();

数组列表定义为:

ArrayList<ExercisesGroup> groups = new ArrayList<ExercisesGroup>();

然后我在循环中填充对象(rs是数据库中的结果集):

while (rs.next()){
    group.setExerciseGroupId(rs.getInt("idbodyarea"));
    group.setExerciseGroupDescription(rs.getString("bodyareadescription"));
    groups.add(group);
}

当我返回arraylist'groups'时,会添加正确数量的结果,但是数据完全相同,即为每个插槽添加最后一条记录。

<exerciseGroupsReturn>
        <exerciseGroupDescription>Description2</exerciseGroupDescription>
        <exerciseGroupId>2</exerciseGroupId>
 </exerciseGroupsReturn>
 <exerciseGroupsReturn>
        <exerciseGroupDescription>Description2</exerciseGroupDescription>
        <exerciseGroupId>2</exerciseGroupId>
 </exerciseGroupsReturn>

知道我做错了吗?

2 个答案:

答案 0 :(得分:3)

您需要在每次迭代时创建对象的新实例:

while (rs.next()){
   group = new ExercisesGroup();
   //...
}

此外,如果您将groups变量的声明从ArrayList<ExercisesGroup>更改为List<ExercisesGroup>会更好。请参阅What does it mean to "program to an interface"?

答案 1 :(得分:0)

看起来你正在循环之外创建你的ExcerciseGroup,所以你总是引用同一个对象。将ExerciseGroup构造函数放在循环中。