我有以下代码
ArrayList<ArrayList<String>> reservation = new ArrayList<ArrayList<String>>();
ArrayList<String> singleList = new ArrayList<String>();
while (rs.next()){
singleList.add(rs.getString("name"));
singleList.add(rs.getString("type"));
singleList.add(rs.getString("view"));
singleList.add(rs.getString("service"));
singleList.add(rs.getString("checkin"));
singleList.add(rs.getString("date"));
reservation.add(singleList);
// correct line System.out.println(reservation.get(0).get(0));
singleList.clear();
}
catch (Exception e) {
e.printStackTrace();
}
// wrong lineSystem.out.println(reservation.get(0).get(0));
return reservation;
}
当我取消注释错误的行(第二个 System.out)时,我收到一个 Index: 0, Size: 0 错误
但如果我取消注释正确的行(第一个 System.out),程序就会运行很好并得到正确的结果。为什么我的 reservation
列表在 while
循环后变空?
最佳答案
不要清除 singleList,在循环内创建一个新的 ArrayList 实例。
List<List<String>> reservation = new ArrayList<>();
// ArrayList<String> singleList = new ArrayList<String>();
while (rs.next()){
List<String> singleList = new ArrayList<>();
singleList.add(rs.getString("name"));
singleList.add(rs.getString("type"));
singleList.add(rs.getString("view"));
singleList.add(rs.getString("service"));
singleList.add(rs.getString("checkin"));
singleList.add(rs.getString("date"));
reservation.add(singleList);
// correct line System.out.println(reservation.get(0).get(0));
// singleList.clear();
}
否则,您将在添加后立即清除添加到预留列表中的对象。了解您的代码不断地将相同的 singleList 实例添加到保留列表中,并在 for 循环中填充此单个实例并在无用的循环中清空它。
关于java - 空列表错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35025487/