HashMap被最后一个值覆盖 [英] HashMap overridden by last value
本文介绍了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次。 p>
On reading back from HashMap, it prints only the last row 'n' number of times.
推荐答案
您缺少的是- row = new String [columnsNumber];
在while循环中,这实际上会导致覆盖数组对象的值,并且您将同一对象添加到 HashMap
。
What you are missing is - row = new String[columnsNumber];
in while loop, which actually cause over writing array object value and you are adding same object to 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);
}
...
这篇关于HashMap被最后一个值覆盖的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文