我正在尝试将一个对象添加到一个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>
知道我做错了吗?
答案 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构造函数放在循环中。