[英]Java-I have an ArrayList contains objects, after one occurrence I want the object is added to another list
[英]Why is my ArrayList of object showing empty when i have added objects to it?
我正在开发一个使用 spring 的项目。 我有一项服务,它将 object 'Baby' 列表返回给 Model 属性。 由于某种原因,在遍历循环并将对象添加到列表后,我得到 list.IsEmpty() 为真。 我在这里做错了什么? 我的 CONTROLLER 代码:
@GetMapping("/print")
public String print(Model model) throws SQLException {
System.out.println(email);
ResultSet rs=DB.resultset(email);
model.addAttribute("items", DB.createList(rs));
return "contribution";
}
我的数据库服务代码:
public List<Baby> createList(ResultSet resultSet) throws SQLException {
int count=0,i=0;
ResultSet rs=resultSet;
while(rs.next()){
count++;
}
System.out.println(count);
Baby baby[]=new Baby[count];
List<Baby> list = new ArrayList<Baby>(count);
while (resultSet.next()) {
i=0;
baby[i].setId(resultSet.getString("nameId"));
baby[i].setName(resultSet.getString("name"));
baby[i].setReligion(resultSet.getString("religion"));
baby[i].setLocation(resultSet.getString("location"));
list.add(baby[i]);
i++;
System.out.println(i);
}
System.out.println(list.isEmpty());
return list;
}
婴儿 CLASS 代码:
package com.example.demo;
public class Baby {
private String id;
private String name;
private String religion;
private String location;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLocation() {
return location;
}
public String getReligion() {
return religion;
}
public void setLocation(String location) {
this.location = location;
}
public void setReligion(String religion) {
this.religion = religion;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
您的问题是您尝试循环遍历 ResultSet 2 次:
while(rs.next()) {
count++;
}
注意做ResultSet rs=resultSet;
不会创建 ResultSet 的副本。 相反,您现在只有 2 个变量指向同一个 ResultSet。
完成此循环后,您的 resultSet 将不再有元素,并且 next() 将返回 false。 所以你的第二个循环
while (resultSet.next()) {
....
}
根本不会输入您尝试添加到列表中的位置。
您必须将Baby
实例创建为 object。 然后你必须把它放在数组中。数组有初始大小,但你必须从 class 添加实例,否则它没有引用。 实际上你不需要数组。 只需将Baby
实例放入列表中即可。 在 DBSERVICE 中像这样更改您的 while 循环:
while (resultSet.next()) {
Baby oneBaby = new Baby();
oneBaby.setId(resultSet.getString("nameId"));
oneBaby.setName(resultSet.getString("name"));
oneBaby.setReligion(resultSet.getString("religion"));
oneBaby.setLocation(resultSet.getString("location"));
list.add(oneBaby);
}
public List<Baby> createList(ResultSet resultSet) throws SQLException {
List<Baby> list = new ArrayList<Baby>();
while (resultSet.next()) {
Baby baby= new Baby();
baby.setId(resultSet.getString("nameId"));
baby.setName(resultSet.getString("name"));
baby.setReligion(resultSet.getString("religion"));
baby.setLocation(resultSet.getString("location"));
list.add(baby);
}
return list;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.