NullPointerException,在哈希表中使用非null <key,value>对

时间:2016-02-12 16:58:48

标签: java nullpointerexception hashtable

我得到一个带有哈希表的空指针异常&#39; get&#39;方法调用。关键绝对不是空的。我通过确定变量项的值来检查&#39; check1&#39;(在代码中注释)。我有有效的字符串列表。我仍然得到一个空指针异常。我究竟做错了什么 ?

       List<String> l= new ArrayList<String>();
            //Values added to l;
            Hashtable<String,int> h=new Hashtable<String,int>();

            for(int i=0;i<l.size();i++){
                String item= l.get(i);
                //check1
                int value= h.get(item); //exception arises at this point
                h.put(item,++value);
            }

2 个答案:

答案 0 :(得分:3)

您的代码无法编译,因为Hashtable<String,int>无效。它应该是Hashtable<String,Integer>

int value= h.get(item);可以抛出异常有两个原因:

  1. h为空(不太可能)。
  2. item的值不在Hashtable中,返回null,Integerint自动取消装箱将抛出NullPointerException } 即可。

答案 1 :(得分:1)

您正在创建Hashtable,如下所示:

Hashtable<String,int> h = new Hashtable<String,int>();

这甚至都不会编译。您将收到编译器错误。

您应该按如下方式进行更改:

Hashtable<String,Integer> h = new Hashtable<String,Integer>();

此外,您可以在以下情况下获得NullPointerException

  1. 如果h本身为null

  2. 如果itemnull