【问题标题】:Java HashMap<String, ArrayList<Object[]>> how to add an empty array?Java HashMap<String, ArrayList<Object[]>> 如何添加一个空数组?
【发布时间】:2013-10-18 13:20:27
【问题描述】:

我在我的应用程序中使用 HashMap,有时我需要添加一个具有空值的键(字符串)(对象的空数组列表)。但是 Netbeans 7.4 说:

Exception in thread "main" java.lang.NullPointerException
    at test.Version.main(Version.java:35)
Java Result: 1

到此代码:

        HashMap<String, ArrayList<Object[]>> d = null;

        ArrayList<Object[]> a;
        a = new ArrayList<>();

        d.put("key1", a);

我不想使用 MultiMap。有没有其他方法可以轻松解决?

【问题讨论】:

  • 您尚未将d 初始化为HashMap 的实例。您正在尝试在 null 引用上调用 put
  • d 为空!请添加行 d = new Hashmap>
  • 只需初始化d,例如d = new HasMap&lt;String, ArrayList&lt;Object&gt;&gt;();

标签: java arraylist hashmap


【解决方案1】:

您将获得一个NullPointerException,因为dnull,并且您尝试通过调用d.put("key1", a) 取消对它的引用。

您可以通过将 d 的初始化更改为

来解决此问题
HashMap<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();

现在d 不为空,您可以使用HashMap 的原生方法,例如d.put("key1", a)

【讨论】:

    【解决方案2】:
    Map<String, List<Object[]>> d = new HashMap<String, List<Object[]>>;
    List<Object[]> a = new ArrayList<Object[]>();
    d.put("key1", a);
    

    如果 d 为 null,则 -> NullPointerException ;)

    【讨论】:

      【解决方案3】:

      你不能调用map.put而不首先创建它的实例,你的地图仍然是空的。

      你需要先实例化它:

      Map<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();
      

      然后:

      d.put("key1", a);
      

      【讨论】:

        【解决方案4】:

        你写道:

        HashMap<String, ArrayList<Object[]>> d = null;
        

        然后你尝试将元素置为空:

        d.put("key1", a);
        

        必须先声明 HashMap 的实例:

         HashMap<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-08
          • 2012-10-25
          • 1970-01-01
          • 1970-01-01
          • 2017-08-30
          相关资源
          最近更新 更多