当前位置: 首页 > 知识库问答 >
问题:

迭代存储在ArrayList中的HashMap中的值

梁丘伟
2023-03-14

有点初学者的问题但是...

我有一个从数据库返回的ResultSet对象-3列30行。

我检索以下数据集:

   try {
        preparedStatement = conn.prepareStatement(
                sqlStatement,
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY);

        rs = preparedStatement.executeQuery();

        ResultSetMetaData md = rs.getMetaData();
        int columns = md.getColumnCount();

        while(rs.next()) {
            HashMap row = new HashMap(columns);
            for(int i=1; i<=columns; ++i){
                row.put(md.getColumnName(i),rs.getObject(i));
            }
            list.add(row);
        }

    null

我知道这应该不难,我只是在努力寻找迭代HashMaps的ArrayList的最佳方法

共有1个答案

吉凯捷
2023-03-14

您使用的是原始类型,IDE或编译器对此抛出了大量警告。你应该注意他们。因为您没有,所以您能够编写代码来分配一个包含映射的列表(每个映射表示一个返回的db结果,将列名映射到行中的值)...设置为list 类型的变量。

这种将DB行转换为映射的模型是个坏主意。有很多很好的库可以与DBS交互。例如,JDBI很容易理解,它有一个更经过深思熟虑的API来访问结果。它甚至可以将结果映射到java数据类型。

如果您必须使用到目前为止粘贴的模型,首先,在所有地方添加泛型,这样编译器就会将其标记为编译时错误。至少要使列表 >

List<Map<String, Object>> data = getResultSet(syndicatorName);
for (int rowIdx = 0; rowIdx < data.size(); i++) {
    Map<String, Object> row = data.get(rowIdx);
    for (Map.Entry<String, Object> cell : row.entrySet()) {
        System.out.printf("Row %d cell %s: %s\n", rowIdx, cell.getKey(), cell.getValue());
    }
}
 类似资料:
  • 在javascript函数中尝试通过传递键迭代映射时,如下所示: 我得到的是空白值。但是当我硬编码key***user1***的值时,它就起作用了。 有人能帮我一下吗?

  • 我正在尝试使用put方法将arraylist存储在hashmap中。我在下一步中清除了列表,以便在下一次迭代中添加下一组值。一旦清除列表,地图中的值也会被清除。虽然我在清理清单之前已经把清单放在地图上了。 sysout打印{key=[]} 有人请让我清楚如何坚持hashmaphash地图。

  • 我正在尝试迭代作为参数传递给jrxml的<code>HashMap</code>的值,在<code>HashMap</code>中,这些值作为<code>List</code>传递。 例 我如何在jasper report Jr XML中迭代这些< code>List?

  • 我想单独打印ArrayList中的每个值,即{1=[A,B,C,D],2=[E,F,G,H]} 如果用户输入2(即键),则输出应为E F G H

  • 问题内容: 我有这样的地图 现在,我必须迭代此Map,然后迭代该地图内的ArrayList。如何使用JSTL做到这一点? 问题答案: 你可以使用标签来遍历数组,集合和映射。 如果是数组和集合,则每次迭代var都会立即为你提供当前迭代的项目。 对于地图,每次迭代var都会为你提供一个Map.Entry对象,该对象又具有getKey()和getValue()方法。 在你的特定情况下,实际上是a Lis

  • 我已经在互联网上搜索了问题的答案,但似乎无法得到我正在寻找的答案,我有两个类,application类和users类,我提示用户输入一个新用户或返回数组列表中已经设置为保存users对象的用户的结果。在应用程序结束后,我希望数组列表继续容纳对象,以便在应用程序类中每次连续运行main方法时,我都可以引用arrayList进行交叉检查。 下面是我正在学习的两门课。首先是应用程序类,其次是用户。 我对