尝试将 List<String> 添加到 HashMap 时出现空点异常
Null point exception when trying to add a List<String> to HashMap
我正在尝试将字符串列表添加到 HashMap,下面显示了我尝试执行的方式。但是我得到了空点异常(我在代码中评论了我得到异常的地方)。
谁能看出我犯了什么错误。
private List<Product> mCartList;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
List<String> listdescription = new ArrayList<String>();
List<String> listcrust = new ArrayList<String>();
List<String> listsize = new ArrayList<String>();
String descriptionString;
String crustString;
String sizeString;
for (int i = 0; i < mCartList.size(); i++) {
mCartList.get(i).selected = false;
hot_number = mCartList.size();
if (mCartList.get(i).description != null
&& !mCartList.get(i).description.isEmpty()) {
descriptionString = mCartList.get(i).description;
listdescription.add(descriptionString);
System.out.println("listdescription = " + listdescription);
}
if (mCartList.get(i).crust != null
&& !mCartList.get(i).crust.isEmpty()) {
crustString = mCartList.get(i).crust;
listcrust.add(crustString);
System.out.println("listcrust = " + listcrust);
}
if (mCartList.get(i).size != null
&& !mCartList.get(i).size.isEmpty()) {
sizeString = mCartList.get(i).size;
listsize.add(sizeString);
System.out.println("listsize = " + listsize);
}
}
listDataChild.put("listcrust", listcrust); // error occurs here
listDataChild.put("listsize", listsize);
listDataHeader.addAll(listdescription);
System.out.println("listDataChild = " + listDataChild);
System.out.println("listDataHeader = " + listDataHeader);
我已经调试并在第 88 行获得了 listsize
的值,但是当我通过第 93 行时,它给出了下面提到的异常。
异常屏幕截图
您还没有为 listDataChild 成员分配对象。
它看起来是在 class 级别上定义的:
private List<Product> mCartList;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
并且代码的重置在一个方法中。这样对吗?
默认情况下,成员未初始化并设置为空。如果您尝试对空引用执行操作,它将失败并出现 NullPointerException。
尝试以下操作:
HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>();
您的 HashMap (listDataChild) 未在第 3 行初始化。
在给它赋值之前对其进行初始化。如果不初始化,调用put方法和NULL上的所有操作时,都会是NULL 会给你一个 NullPointerException.
例如,您可以在调用 put 方法之前添加初始化:
listDataChild = new HashMap<String, List<String>>();
我没看到,您实例化了 listDataChild 对象,这将导致此问题,在您要添加新项目时对象为 null。
HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>();
我正在尝试将字符串列表添加到 HashMap,下面显示了我尝试执行的方式。但是我得到了空点异常(我在代码中评论了我得到异常的地方)。 谁能看出我犯了什么错误。
private List<Product> mCartList;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
List<String> listdescription = new ArrayList<String>();
List<String> listcrust = new ArrayList<String>();
List<String> listsize = new ArrayList<String>();
String descriptionString;
String crustString;
String sizeString;
for (int i = 0; i < mCartList.size(); i++) {
mCartList.get(i).selected = false;
hot_number = mCartList.size();
if (mCartList.get(i).description != null
&& !mCartList.get(i).description.isEmpty()) {
descriptionString = mCartList.get(i).description;
listdescription.add(descriptionString);
System.out.println("listdescription = " + listdescription);
}
if (mCartList.get(i).crust != null
&& !mCartList.get(i).crust.isEmpty()) {
crustString = mCartList.get(i).crust;
listcrust.add(crustString);
System.out.println("listcrust = " + listcrust);
}
if (mCartList.get(i).size != null
&& !mCartList.get(i).size.isEmpty()) {
sizeString = mCartList.get(i).size;
listsize.add(sizeString);
System.out.println("listsize = " + listsize);
}
}
listDataChild.put("listcrust", listcrust); // error occurs here
listDataChild.put("listsize", listsize);
listDataHeader.addAll(listdescription);
System.out.println("listDataChild = " + listDataChild);
System.out.println("listDataHeader = " + listDataHeader);
我已经调试并在第 88 行获得了 listsize
的值,但是当我通过第 93 行时,它给出了下面提到的异常。
异常屏幕截图
您还没有为 listDataChild 成员分配对象。
它看起来是在 class 级别上定义的:
private List<Product> mCartList;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
并且代码的重置在一个方法中。这样对吗?
默认情况下,成员未初始化并设置为空。如果您尝试对空引用执行操作,它将失败并出现 NullPointerException。
尝试以下操作:
HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>();
您的 HashMap (listDataChild) 未在第 3 行初始化。
在给它赋值之前对其进行初始化。如果不初始化,调用put方法和NULL上的所有操作时,都会是NULL 会给你一个 NullPointerException.
例如,您可以在调用 put 方法之前添加初始化:
listDataChild = new HashMap<String, List<String>>();
我没看到,您实例化了 listDataChild 对象,这将导致此问题,在您要添加新项目时对象为 null。
HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>();