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

为什么我的hashmap只接受最后一个条目?

董翰池
2023-03-14

我正在使用Hibernate JPA运行本机查询并返回结果列表。

我想要获取的结果列表并添加到映射中以供将来处理,但是返回的映射仅包含ResultList中的最后一项。

如何让结果列表在地图中添加多个条目?

Map<String,String> results = new HashMap<>();

Query query = em.createNativeQuery(select);
List<Object[]> resultSet = query.getResultList();

for(Object[] o : resultSet){
    System.out.println(o[0] + "\t"+ o[1]); //this prints out the columns correctly
    results.put((String)o[0],(String)o[1]); //but this only ever holds the last displayed column
}

--编辑--

预期地图内容:

940 7107877
940 7107664
940 7112778
940 7112479
940 7114678
940 7113504

println输出

940 7107877
940 7107664
940 7112778
940 7112479
940 7114678
940 7113504

调试器输出

从下面的图像中,您可以看到结果size=1、显示对象的结果集示例和i计数器(我添加它以说明我正在进行哪个迭代)

共有1个答案

戚飞雨
2023-03-14

如果每次o[0]总是相同的,那么您将继续覆盖以前的值,因为根据定义映射每个键有一个值。您应该使用一个列表(包含一些保存这两个值的自定义对象)或使用Google Collections库中的Multimap之类的东西,它允许您多次放置同一个键,并返回值的集合。

 类似资料:
  • 输出8 好吧,我给出了 neg=-1,low=0、b=10、键盘=2、驱动器=3 的值,我的数组是 [3 1] [5 2 8] 我已经添加了键盘和驱动器值,将其存储在max数组中。当我将这些最大数组值与b if(max[i]进行比较时

  • 问题内容: 我是新手,我正在尝试调用UISwitch IBAction中要求本地通知的多个函数。我想在某个日期(一年中的每个季度第4、7、10、1个)发送通知。只有第四个季度函数被调用。如何获得全部四个功能?这是我的代码: // UISwitch用于季度通知 //四个季度的功能 问题答案: 我认为您使用的是+ iOS10,并且使用的是UserNotifications框架,对吗? 您的很有可能具有

  • 我目前正在学习Java中的多态性,任务的一部分是创建一个程序,使用继承和多态性打印出各种子类。我试图寻找解决方案,但似乎找不到其他人遇到这个问题。 下面是一段代码,应该分别打印和。然而,输出是,。 我已经尝试过使用Eclipse进行调试,但我无法确定错误是什么。在这一点上我真的很困惑,过去一周我一直在尝试这个问题,但没有结果。如果这是一个简单的问题,请原谅我,但我不知道出了什么问题。我真的很感激任

  • 问题内容: 我发布此消息是因为该主题刚刚在另一个问题/答案中提出,并且该行为没有得到很好的记录。 考虑数据框 我想获取由column定义的每个组的第一行和最后一行。 我试过了 但是,这并没有给我我所期望的。 如何获得每个组中的实际第一个和最后一个值? 问题答案: 一种选择是使用该方法: 但是,我还没有找到一种将它们整齐地聚合的方法。当然,总是可以使用构造函数: 注意:我明确使用了该属性,否则您必须

  • 问题内容: 为什么我添加到ArrayList中对象只包N个最后一个元素? 问题答案: 此问题有两个典型的原因: 你存储在列表中的对象使用的静态字段 意外将同一对象添加到列表 静态场 如果列表中的对象将数据存储在静态字段中,则列表中的每个对象将看起来是相同的,因为它们具有相同的值。考虑下面的类: 在该示例中,由于声明了,因此在所有实例之间只有一个共享。(请参阅“了解班级成员”教程。) 如果使用以下代

  • 我正在开发一个数独小程序,我想制作它的单元格(扩展JTextField),以便它只接受0-9和长度为1之间的整数。稍后我会对它进行更多限制(以便它符合游戏规则)。我从: 在这里,我试图过滤输入,对于开始,我只是试图将其限制为整数和一个数字,但似乎我可以输入任意多的数字,而最后一行不会被触发。 想在这里得到一些帮助,谢谢: