Java ArrayList<;整数>;抛出NullPointerException

Java ArrayList<;整数>;抛出NullPointerException,java,arraylist,nullpointerexception,Java,Arraylist,Nullpointerexception,我有一个方法返回ArrayList。当我返回它时,如果它为null,我会得到一个nullPointerException。现在我想进行某种验证,防止出现空指针异常 这些都是我尝试过的,但我仍然得到了nullpointerexception Map<Integer,ArrayList<Integer>> personMap = new HashMap<Integer,ArrayList<Integer>>(); public ArrayList&l

我有一个方法返回
ArrayList
。当我返回它时,如果它为null,我会得到一个
nullPointerException
。现在我想进行某种验证,防止出现空指针异常

这些都是我尝试过的,但我仍然得到了
nullpointerexception

Map<Integer,ArrayList<Integer>> personMap = new HashMap<Integer,ArrayList<Integer>>();

public ArrayList<Integer> method(int departmentID){
  if (personMap.get(new Integer(departmentID)) !=null)
     return personMap.get(new Integer(departmentID));
  else 
     return null;


}
我仍然得到
nullpointerexception
。有人能帮我解决这个问题吗

从一个测试类中,我将如下调用该方法:

Class1 cl = new Class1();

if (c1.method(112121)) // do something

如果映射没有键的条目,
get()
返回
null

如果随后调用
.isEmpty()
,则会得到一个NPE


而是测试
map.get(key)==null
或更好的,
!map.contains(key)

如果map没有键的条目,
get()
返回
null

如果随后调用
.isEmpty()
,则会得到一个NPE


而是测试
map.get(key)==null
或更好的,
!map.contains(key)

首先,您的
map
声明不会编译:-

Map<Integer,ArrayList<Integer>> personMap = new ArrayList<Integer,ArrayList<Integer>>();
if (c1.method(112121))
您的
方法()
返回一个
ArrayList
,而在
Java
中,您只能在
if
中将
布尔值作为条件


需要修改:-

您应该将if更改为:-

并使用第一种方法

事实上,你不需要一个
if-else
。您只需从映射返回值:-

public ArrayList<Integer> method(int departmentID){ 
     return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
返回personMap.get(新整数(部门ID));
}

现在,这将返回
null
,如果键不在
HashMap
中,否则它将返回相应的
ArrayList

,首先,您的
Map
声明将不会编译:-

Map<Integer,ArrayList<Integer>> personMap = new ArrayList<Integer,ArrayList<Integer>>();
if (c1.method(112121))
您的
方法()
返回一个
ArrayList
,而在
Java
中,您只能在
if
中将
布尔值作为条件


需要修改:-

您应该将if更改为:-

并使用第一种方法

事实上,你不需要一个
if-else
。您只需从映射返回值:-

public ArrayList<Integer> method(int departmentID){ 
     return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
返回personMap.get(新整数(部门ID));
}

现在,这将返回
null
,如果键不在
HashMap
中,否则它将返回相应的
ArrayList
您的第一种方法与:

public ArrayList<Integer> method(int departmentID){
    return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
返回personMap.get(新整数(部门ID));
}
第二个很明显可以投掷NPE:

public ArrayList<Integer> method(int departmentID){
  if (personMap.get(new Integer(departmentID)).isEmpty()) return null;
  else return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
if(personMap.get(newinteger(departmentID)).isEmpty()返回null;
否则返回personMap.get(新整数(departmentID));
}
如果
personMap.get(newinteger(departmentID))
返回null(当映射没有该键的条目时,它会返回null),则调用抛出NPE的方法:


if(personMap.get(new Integer(departmentID)).isEmpty())
您的第一种方法与以下方法相同:

public ArrayList<Integer> method(int departmentID){
    return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
返回personMap.get(新整数(部门ID));
}
第二个很明显可以投掷NPE:

public ArrayList<Integer> method(int departmentID){
  if (personMap.get(new Integer(departmentID)).isEmpty()) return null;
  else return personMap.get(new Integer(departmentID));
}
public ArrayList方法(int departmentID){
if(personMap.get(newinteger(departmentID)).isEmpty()返回null;
否则返回personMap.get(新整数(departmentID));
}
如果
personMap.get(newinteger(departmentID))
返回null(当映射没有该键的条目时,它会返回null),则调用抛出NPE的方法:


if(personMap.get(new Integer(departmentID)).isEmpty())
首先,我不建议从方法返回null。您应该返回空的ArrayList

Map<Integer,ArrayList<Integer>> personMap = new HashMap<Integer, ArrayList<Integer>> ();

public ArrayList<Integer> someMethod(int departmentID){

    if (personMap.get(departmentID) !=null)
        return personMap.get(departmentID);
    else
        return new ArrayList<Integer>();

}
Map personMap=newhashmap();
公共ArrayList someMethod(int departmentID){
if(personMap.get(departmentID)!=null)
returnpersonmap.get(部门ID);
其他的
返回新的ArrayList();
}

首先,我不建议从方法返回null。您应该返回空的ArrayList

Map<Integer,ArrayList<Integer>> personMap = new HashMap<Integer, ArrayList<Integer>> ();

public ArrayList<Integer> someMethod(int departmentID){

    if (personMap.get(departmentID) !=null)
        return personMap.get(departmentID);
    else
        return new ArrayList<Integer>();

}
Map personMap=newhashmap();
公共ArrayList someMethod(int departmentID){
if(personMap.get(departmentID)!=null)
returnpersonmap.get(部门ID);
其他的
返回新的ArrayList();
}

您没有在
Map personMap=new ArrayList()上得到编译器错误吗?能否从NullPointerException上载堆栈跟踪?是否确定地图中存在departmentID的密钥?也许你应该验证..@Oren关键部门ID在我的地图中不存在。。因此,我希望捕获此信息并提醒用户。我该怎么做?我是Nandkumar Tekale的副手。我很惊讶你是如何从一个不可编译的代码中得到空指针的。如果这是打字错误。。编辑它你没有在
Map personMap=new ArrayList()上得到编译器错误吗?能否从NullPointerException上载堆栈跟踪?是否确定地图中存在departmentID的密钥?也许你应该验证..@Oren关键部门ID在我的地图中不存在。。因此,我希望捕获此信息并提醒用户。我该怎么做?我是Nandkumar Tekale的副手。我很惊讶你是如何从一个不可编译的代码中得到空指针的。如果这是打字错误。。编辑它