如何处理地图中的空值

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());
    }