【问题标题】:Why synchronized object give null pointer Exception if we are adding null key as a Object.? [duplicate]如果我们将空键添加为对象,为什么同步对象会给出空指针异常。? [复制]
【发布时间】:2023-03-12 02:53:02
【问题描述】:

这里我有哈希表和并发哈希映射的代码示例,它不允许空键作为对象,但两者都是同步的。

  public class Example
  {
public static void main(String[] args)
{
    ConcurrentHashMap<String,String> premiumPhone = 
                           new ConcurrentHashMap<String,String>();
    premiumPhone.put("Apple", "iPhone");
    premiumPhone.put("HTC", "HTC one");
    premiumPhone.put(null,"S5");

    Iterator iterator = premiumPhone.keySet().iterator();

    while (iterator.hasNext())
    {
        System.out.println(premiumPhone.get(iterator.next()));
        premiumPhone.put("Sony", "Xperia Z");
    }

}
}

【问题讨论】:

    标签: java serialization concurrenthashmap


    【解决方案1】:

    来自 ConcurrentHashMap 的 Javadoc

    与 Hashtable 类似,但与 HashMap 不同,此类不允许 null 用作键或值。

    https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html

    另外,看看这个:https://stackoverflow.com/a/9298113/2227788

    【讨论】:

    • 为什么序列化对象会出现空指针异常。
    • @Santosh 你正在序列化一个对象,你正在传递一个引用作为键。
    • @Santosh 我不明白你的意思。你没有序列化一个对象,你试图将一个空键放入一个不可能的 ConcurrentHashMap 中,正如 Javadoc I 中所引用的那样链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多