java - HashMap 被最后一个值覆盖

标签 java arrays collections hashmap

Statement selectStatement = connection.createStatement();
        ResultSet selectResultSet = selectStatement.executeQuery(query);
        logger.info("sql query " + selectStatement.toString());
        ResultSetMetaData rsmd = selectResultSet.getMetaData();
        int columnsNumber = rsmd.getColumnCount();
        String[] row = new String[columnsNumber];

        int ctr = 0;
        logger.info("Reading from database...");
        while(selectResultSet.next())
        {
            for(int i=0;i<columnsNumber;i++){
                row[i] = selectResultSet.getString(i+1);
            }
            System.out.println();
            dataFromQuery.put(ctr++, row);
        }
        selectResultSet.close();

从 HashMap 读回时,它只打印最后一行 'n' 次。

最佳答案

您缺少的是 - row = new String[columnsNumber]; 在 while 循环中,这实际上导致覆盖数组对象值并且您将相同的对象添加到 HashMap.

...
while(selectResultSet.next()){
     row = new String[columnsNumber];
     for(int i=0;i<columnsNumber;i++){
         row[i] = selectResultSet.getString(i+1);
     }
     System.out.println();
     dataFromQuery.put(ctr++, row);
}
...

关于java - HashMap 被最后一个值覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19047809/

相关文章:

javascript - 如何将json对象显示为html?

php - swfupload 销毁 session ? php

javascript - 从数组 javascript 中删除旧值

c# - IEnumerable <T>的AddItem的C#扩展方法

Java:将一个方法的参数设为另一个方法

java - 客户端的webjars目录几乎是空的

collections - 在主干集合上使用下划线方法 'find'

java - 自定义 Java 按名称排序

Java Gas Station 项目编码遇到的麻烦

java - 比较非英文字符