我正在尝试将字符串列表添加到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行时,它会给出下面提到的异常。
异常屏幕截图
答案 0 :(得分:3)
您尚未将对象分配给listDataChild成员。
看看这些是在班级上定义的:
private List<Product> mCartList;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
代码重置在方法内部。这是对的吗?
默认情况下,该成员未初始化并设置为null。如果您尝试对空引用执行操作,它将失败并显示NullPointerException。
尝试以下方法:
HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>();
答案 1 :(得分:3)
您的 HashMap (listDataChild)未在第3行初始化。
在为其添加值之前初始化它。如果你没有初始化它,那么当你在它上面调用方法 put 并且 NULL 上的所有操作都会给出它时,它将 NULL 你是一个 NullPointerException 。
例如,您可以在调用 put 方法之前添加初始化:
listDataChild = new HashMap<String, List<String>>();
答案 2 :(得分:1)
我没有看到,你实例化了listDataChild对象,这会导致这个,对象在你要添加新项目时为空。
HashMap<String, List<String>> listDataChild = new HashMap<String, List<String>>();