为何我遍利ArrayList里面的值都是一样的?

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:34:39
public ArrayList<Admin> getAdminAll() {
ArrayList<Admin> ay = new ArrayList<Admin>();
try {
int i = 0;
ps = cn.prepareStatement("SELECT username, password, createtime, control FROM admin");
rs = ps.executeQuery();
while(rs.next()) {
admin.setUsername(rs.getString(1));
admin.setPassword(rs.getString(2));
admin.setCreatedate(rs.getString(3));
admin.setControl(rs.getInt(4));
ay.add(i,admin);
i++;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ay;
}
我从数据库中得到ArrayList然后用以下的方法取出后全是一样的内容。
ArrayList al = getAdminAll();
Iterator it = al.iterator();
Admin ad;
while(it.hasNext()) {
ad=(Admin)it.next();
System.out.println("username = "+ad.getUsername());
}

while(rs.next()) {
admin.setUsername(rs.getString(1));
admin.setPassword(rs.getString(2));
admin.setCreatedate(rs.getString(3));
admin.setControl(rs.getInt(4));
ay.add(i,admin);
i++;
}
java的对象是引用形式的,你这样做加的都是同一个对象,最后肯定是都是最后一条记录的内容
因为先添加进去的对象也补你改变了

解决方法:
while(rs.next()) {
admin=new Admin();
admin.setUsername(rs.getString(1));
admin.setPassword(rs.getString(2));
admin.setCreatedate(rs.getString(3));
admin.setControl(rs.getInt(4));
ay.add(i,admin);
i++;
}