如何处理地图中的空值
How to handle null value in map
我在打印地图的选定值时遇到 NullPointerException
问题。如果 selectedCert 列表包含 (AA
,BB
,CC
),地图将打印:
EN
EN
EN
但是,如果 selectedCert 列表仅包含 2 个,即 (AA
,BB
),会出现空指针异常,因为ccLang为空。
代码片段:
private String ccLang;//Setter and Getter
Map<String, String> Cert = new HashMap<String,String>(ss.size());
Cert.put("AA", "EN");
Cert.put("BB", "EN");
Cert.put("CC", ccLang);
for(String key: selectedCert)
System.out.println(Cert.get(key));
System.out.println();
如何解决这个问题?
如果您的值可以为空,只需添加一个空检查:
if(value != null) {
map.put(key, value);
}
你可以使用一个方法:
private static void putNonNull(String key, String value,
Map<String, String> map) {
if(value != null) {
map.put(key, value);
}
}
putNonNull("AA", "EN", Cert);
putNonNull("BB", "EN", Cert);
putNonNull("CC", ccLang, Cert);
我稍微编辑了一下代码,看看这是否就是您所说的,但这会很好用:
String ccLang = null;//Setter and Getter
Map<String, String> Cert = new HashMap<String,String>(10);
Cert.put("AA", "EN");
Cert.put("BB", "EN");
Cert.put("CC", ccLang);
for (Entry<String, String> entry : Cert.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
我在打印地图的选定值时遇到 NullPointerException
问题。如果 selectedCert 列表包含 (AA
,BB
,CC
),地图将打印:
EN
EN
EN
但是,如果 selectedCert 列表仅包含 2 个,即 (AA
,BB
),会出现空指针异常,因为ccLang为空。
代码片段:
private String ccLang;//Setter and Getter
Map<String, String> Cert = new HashMap<String,String>(ss.size());
Cert.put("AA", "EN");
Cert.put("BB", "EN");
Cert.put("CC", ccLang);
for(String key: selectedCert)
System.out.println(Cert.get(key));
System.out.println();
如何解决这个问题?
如果您的值可以为空,只需添加一个空检查:
if(value != null) {
map.put(key, value);
}
你可以使用一个方法:
private static void putNonNull(String key, String value,
Map<String, String> map) {
if(value != null) {
map.put(key, value);
}
}
putNonNull("AA", "EN", Cert);
putNonNull("BB", "EN", Cert);
putNonNull("CC", ccLang, Cert);
我稍微编辑了一下代码,看看这是否就是您所说的,但这会很好用:
String ccLang = null;//Setter and Getter
Map<String, String> Cert = new HashMap<String,String>(10);
Cert.put("AA", "EN");
Cert.put("BB", "EN");
Cert.put("CC", ccLang);
for (Entry<String, String> entry : Cert.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}