繁体   English   中英

将resultSet转换为arrayList并打印出来

[英]Converting resultSet to arrayList and printing it out

我试图将具有2列的结果集转换为数组的arraList。 要检查我的代码,然后将其打印出来。 为此,我做了一张折衷为2列×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();
    }

}

forwhile循环仅保留一个循环。

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

您在ArrayList有一个嵌套的迭代,这意味着您对ArrayList进行了多次迭代(次数是ArrayListsize() )。

您只需要一个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()));
    }

不是都。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM