簡體   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