哈希映射在使用键检索时未按预期返回值



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

有一个哈希图,其键:值对分别为Long:Dto。

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

对于以下内容:

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

任何建议将不胜感激在这里...这应该肯定有效!

也许我错过了一些明显的东西。

答:所以看起来我的键值是字符串类型 - 如下所示:

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());

你在哈希映射中的键是 int 类型,你的 contains 方法有 19999984L,它是长类型。

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));

这就是错误的原因。

最新更新