将resultset转换为arraylist并打印出来

ac1kyiln  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(307)

我正在尝试将包含2列的结果集转换为数组列表。为了检查我的代码,我把它打印出来。为此,我做了一个2列的小表格á 5排。
问题是我的测试打印输出是原来表格的5倍。所以现在我很困惑。我转换结果集的方式是错误的还是打印不对?有人能帮忙吗?
代码:

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();
    }

}
jvlzgdj9

jvlzgdj91#

也只保留一个循环 for 或者 while 循环。

for (int[] arr : result) {
        System.out.println(Arrays.toString(arr));
    }
vs3odd8k

vs3odd8k2#

你有一个嵌套的迭代 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()));
    }

不是两者都有。

相关问题