无法以某种方式将空值放入 HashMap

Posted

技术标签:

【中文标题】无法以某种方式将空值放入 HashMap【英文标题】:Putting null value into HashMap is not possible somehow 【发布时间】:2012-06-06 18:35:26 【问题描述】:

我正在编写一个 android 应用程序并使用 HashMap<String,MyClass>。根据 Java 和 Android 文档,HashMap 应该接受空键和空值。但是,奇怪的是,我不能将 null 值放入我的地图中。在代码中:

myMap.put(1, null);

我收到了错误:

The method put(String, MyClass) in the type HashMap<String,MyClass> is not applicable for the arguments (int, null).

这是为什么呢?有什么问题以及如何解决?

【问题讨论】:

你只需要先看一下语言的基础,然后来这里。 【参考方案1】:

在这种情况下,值不是问题。由于 HashMap 被声明为具有 String 键并且您尝试将 int 键放入其中,因此它不是在抱怨值而是在抱怨键。

【讨论】:

你真是个天才!我会在 9 分钟内接受你的回答 ;-) 该网站现在不允许这样做。【参考方案2】:

因为您使用的是 int 类型的键,并且它被声明为除了 String 类型的键。

【讨论】:

【参考方案3】:

HashMap 被声明为具有 String 键,而您正在尝试放置一个 int 键。

在您的情况下,您可以使用以下内容:

myMap.put("1", null);

myMap.put(1 + "", null);

【讨论】:

【参考方案4】:

首先尝试找出错误然后寻找所需的解决方案。因为我们的大部分问题都将通过查看错误描述来解决。它清楚地表明您使用的是 int 而不是 string。

【讨论】:

【参考方案5】:

如果您想使用 Integer 作为 Map 的键,请将您的 Map 定义更改为:

Map<Integer,MyClass> myMap = new HashMap();
myMap.put(1, null);

其他明智的做法是使用 String 作为 Map 的键:

Map<String,MyClass> myMap = new HashMap();
myMap.put("1", null);

【讨论】:

以上是关于无法以某种方式将空值放入 HashMap的主要内容,如果未能解决你的问题,请参考以下文章

将空值传递给 SVG 路径(使用 d3.js)以抑制丢失数据

如何将空值存储为整数字段

如何将空值显式插入参数化查询?

通过服务器功能将空值返回给Apps Script webapp以获取某个电子表格

将空值作为参数传递给方法时如何修复 NullPointerException [重复]

使用比较对 Kendo Grid JQuery 进行排序 - 排序时将空值放在最后