我是以下代码,
ArrayList<ArrayList<String>> outer = new ArrayList<ArrayList<String>>();
ArrayList<String> inner = new ArrayList<String>();
ResultSet rs = statement.executeQuery(sqlQuery);
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (rs.next()) {
for(int i=1; i<=columnsNumber; i++){
inner.add(rs.getString(i));
}
}
outer.add(inner);
return outer;
我得到的外表是这样的
[[100, 200, 300, 100, 200, 300]]
我想要得到的是
[[100, 200, 300], [100, 200, 300]]
我希望每一行都是列表中的唯一项目,但我得到的是列表中一个项目中所有行的列表。
我该怎么办?
有人能帮助我吗?
答案 0 :(得分:3)
为每条记录创建一个新内部并将其添加到外部。
ArrayList<String> inner;
ResultSet rs = statement.executeQuery(sqlQuery);
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
inner = new ArrayList<String>();
for(int i=1; i<=columnsNumber; i++){
inner.add(rs.getString(i));
}
outer.add(inner);
}
答案 1 :(得分:2)
在while
循环的每一步中,您必须使用空的inner
列表重新初始化,并在步骤完成之前将其添加到outer
列表:
while (rs.next()) {
inner = new ArrayList<String>();
for(int i=1; i<=columnsNumber; i++){
inner.add(rs.getString(i));
}
outer.add(inner);
}
答案 2 :(得分:1)
由于outer
是列表列表,因此在while
循环的每次迭代中,您需要:
inner
列表inner
列表inner
列表存储在outer
列表中。我还会在inner
循环中保留while
声明以限制其范围,如下所示:
List<List<String>> outer = new ArrayList<>();
ResultSet rs = statement.executeQuery(sqlQuery);
ResultSetMetaData rsmd = rs.getMetaData();
int columnsNumber = rsmd.getColumnCount();
while (rs.next()) {
List<String> inner = new ArrayList<>();
for(int i = 1; i <= columnsNumber; i++) {
inner.add(rs.getString(i));
}
outer.add(inner);
}
return outer;