我正在尝试将包含2列的结果集转换为数组的arraList。要检查我的代码,然后将其打印出来。为了这个目的,我做了一个小桌子,有两列á5行。
问题是我的测试打印件打印出原始表的5倍。所以现在我很困惑。我转换resultSet的方式是错误的还是我打印不正确?有人可以帮忙吗?
代码:
public static void partner() {
ArrayList <int[]> result = new ArrayList<int[]>();
String select = "SELECT ID, age FROM individuen WHERE age BETWEEN 20 AND 40 " +
"AND Familienstand IS 2 ORDER BY RANDOM() LIMIT 5";
DBController dbc = DBController.getInstance();
dbc.initDBConnection();
try {
Statement stmt = DBController.connection.createStatement();
ResultSet rs = stmt.executeQuery(select);
int columnCount = rs.getMetaData().getColumnCount();
while(rs.next()){
int[] row = new int[columnCount];
for (int i = 0; i < columnCount ; i++){
row[i] = rs.getInt(i + 1);
}
result.add(row);
}
Iterator<int[]> it = result.iterator();
while (it.hasNext()) {
for (int[] arr : result) {
System.out.println(Arrays.toString(arr));
}
it.next();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
答案 0 :(得分:3)
只保留一个循环for
或while
循环。
for (int[] arr : result) {
System.out.println(Arrays.toString(arr));
}
答案 1 :(得分:1)
您对ArrayList
进行了嵌套迭代,这意味着您多次迭代ArrayList
次(size()
ArrayList
的次数。
你只需要一个for循环:
for (int[] arr : result) {
System.out.println(Arrays.toString(arr));
}
或单个while循环:
Iterator<int[]> it = result.iterator();
while (it.hasNext()) {
System.out.println(Arrays.toString(it.next()));
}
不是两者。