java - 使用键检索时,Hashmap 未按预期返回值

标签 java hashmap

应该很简单,但它让我发疯!

有一个 HashMap,其 Key:Value 对分别为 Long:Dto。

当我调试时,我可以看到 Hashmap 中以 Long 值作为键的一个条目 - 但是当我尝试使用该键的 get() 时,我得到一个 null。

对于以下内容:

Map<Long, Dto> response = getMap();

System.out.println("Contents of HashMap: " + response);
System.out.println("Size of HashMap: " + response.size());
System.out.println("HashMap Keyset: " + response.keySet());
System.out.println("HashMap Contains: " + response.containsKey(19999984L));
System.out.println("HashMap Object: " + response.get(19999984L));

我得到以下输出:

Contents of HashMap: {19999984={productOptionId=19999984, amount={amount=20.99, currency=EUR}, pricingType=MSRP}}
Size of HashMap: 1
HashMap Keyset: [19999984]
HashMap Contains: false
HashMap Object: null

如果有任何建议,我们将不胜感激...这肯定有效!

也许我遗漏了一些明显的东西。

答案:看来我的键值是 String 类型 - 如下:

System.out.println("Contents of HashMap: " + response);
System.out.println("Size of HashMap: " + response.size());
System.out.println("HashMap Keyset: " + response.keySet());
System.out.println("HashMap Contains: " + response.containsKey("19999984"));
System.out.println("HashMap Object: " + response.get("19999984"));
System.out.println("HashMap Class: " + response.getClass());

最佳答案

您的 HashMap 中的键是 int 类型,并且您的 contains 方法具有 19999984L 这是 long 类型。

Contents of HashMap: {19999984={productOptionId=19999984, amount={amount=20.99, currency=EUR}, pricingType=MSRP}}
Size of HashMap: 1
System.out.println("HashMap Contains: " + response.containsKey(19999984L));

这就是错误的原因。

关于java - 使用键检索时,Hashmap 未按预期返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51107881/

相关文章:

javascript - 如何在NodeJs中应用Java/Spring的分层架构?

c++ - 如何检查 hash_map 中我的自定义哈希是否良好?

java - 使用注释从 hibernate 中的其他表映射数据?

java - 简单、便宜的并发列表或集合?

java - 反序列化对象图时 hashCode() 中的 NullPointerException

java - 使用 Java 制作 GUI 从哪里开始(Swing 是否已弃用?)

java - new DefaultHttpClient() 出现奇怪的 Java 错误

Java:无法调用带参数的函数

java - 使用grab和RESTClient尝试简单的groovy脚本

java - 如何声明和初始化包含 HashSet 的 HashMap