2013-04-25 30 views
0

我正在尝试将一个对象添加到arraylist。Object Array只添加最后一条记录

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> 

任何想法我做错了什么?

回答

3

你需要在每个迭代上创建对象的新实例:

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

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

0

看起来您正在循环外部创建ExcerciseGroup,因此您始终引用同一个对象。将ExerciseGroup构造函数放入循环中。

相关问题