为啥我们不能在java中的linkedHashMap中放置空键[关闭]

Posted

技术标签:

【中文标题】为啥我们不能在java中的linkedHashMap中放置空键[关闭]【英文标题】:Why we can't put null key in linkedHashMap in java [closed]为什么我们不能在java中的linkedHashMap中放置空键[关闭] 【发布时间】:2017-09-22 05:00:15 【问题描述】:

我们可以在 hashMap 中放置一个空键。但是在linkedHashMap中我们不能拉空键。这背后的原因是什么。

【问题讨论】:

你在哪里读到“在linkedHashMap中我们不能拉空键”? “单个”空键是什么意思? 所有映射都允许使用 Null 键,而不仅仅是 HashMap。 您可以为所有地图分配 null 作为键。按照@assylias 回答。 @iavanish 这不是真的,TreeMap 在某些情况下会很乐意拒绝 null 键。 @biziclop 是的,你是对的(在某些情况下 TreeMap 会产生空指针异常)。如果您的键的 Comparator 不允许空值或者它基于自然顺序,那么它将不允许空键。但是,如果您创建允许空值的自定义比较器,则地图也将允许空键。从 Java Doc 中,“如果指定的键为 null 并且此映射使用自然排序,或者其比较器不允许空键,则抛出 NullPointerException”。 【参考方案1】:

可以LinkedHashMap 中放置一个空键。示例:

Map<String, String> m = new LinkedHashMap<> ();
m.put(null, "a");
System.out.println(m.size());
System.out.println(m.get(null));

打印1a

【讨论】:

【参考方案2】:

关注documentation

该类提供所有可选的 Map 操作,并允许 空元素。

【讨论】:

以上是关于为啥我们不能在java中的linkedHashMap中放置空键[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥Java中的file类无法只能操作不能读写?

java 内部类为啥不能static

java中几种Map在啥情况下使用,并简单介绍原因及原理

为啥我们不能在(非静态)内部类(Java 16 之前)中使用静态方法?

在 Java 7 ConcurrentHashMap 中,为啥在写的时候需要段锁?为啥我们不能再次使用 Unsafe 来保持非阻塞?

java中标记接口的意义何在?为啥没有它们我们就不能继续?