【问题标题】:Get method of an hashmap with key as another hashmap always returns null values以键为另一个哈希图的哈希图的获取方法始终返回空值
【发布时间】:2013-09-10 06:48:04
【问题描述】:

我有两个哈希图。其中每一个都具有与其他哈希图一样的键,如下所示。

Map<Map<String, Object>, Map<String, Object>>

该映射是从 DB2 数据库查询输出的值中填充的。我注意到,即使我有两个这样的哈希图,并且如果我尝试检索哈希图键的值,它总是返回 null。我已经通过在监视窗口中添加所有需要的变量来检查。我觉得一切都很好。

我的代码的小sn-p。

mapTransactionNumberTranIds
                .put(inputMessageDbRecord
                        .get(i)
                        .get(prop.getProperty(
                                BloombergConstants.INPUT_BBR_TRANS_NO).toString())
                        .toString(),
                        inputMessageDbRecord
                                .get(i)
                                .get(prop.getProperty(
                                        BloombergConstants.TRAN_ID)
                                        .toString()).toString());

注意: inputMessageDbRecord 的类型为 List&lt;Map&lt;String, Object&gt;&gt;,mapTransactionNumberTranIds 的类型为 Map&lt;Map&lt;String, Object&gt;, Map&lt;String, Object&gt;&gt;

【问题讨论】:

  • 曾经想过使用对象之类的东西。你知道成员、方法和类似的东西吗? HashMap 虽然功能强大,但并不是解决所有问题的工具。
  • 好点。但不幸的是,我正在尝试访问由其他人编写的方法,该方法仅需要以上述哈希图格式输入。
  • 您已经创建了包含相同映射的相同 HashMap,这意味着将相同的条目集传递给 get() 方法以获取值。当你这样做时,可能会遗漏一些东西。
  • 是吗?我怎样才能做到这一点?我正在使用不同的 where 子句执行相同的查询并获取两个结果集,然后将该信息存储在上面的哈希图中。两个结果中的列名将相同。我没有使用entrySet,我只是检查两个hashmap中是否存在给定的键,然后进行简单的相等比较。
  • I am trying to access a method which is written by someone else which requires input in the above hashmap format only 这就是我会用重物扇他耳光以引起注意,然后再次扇他耳光的关键,以免忘记愚蠢对健康有害。说真的。

标签: java


【解决方案1】:

您还必须了解,仅当您具有完全相同的对象实例用于从地图中添加和检索时,该键才有效,并且该键不允许永远更改,因为比较将检查该键是否是相同的实例使用 equals() 和 hashCode()。

This article describes issues about using object as key in a hashmap.

您面临的问题很可能与这些要求有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2017-02-16
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多