搜尋

首頁  >  問答  >  主體

java - 怎么判断map key对应的值是不是空的

System.out.println("a**"+map.get(a).getClass());
System.out.println("a**"+map.get(a));

-------------分割线------------
a**class java.util.ArrayList
a**[]

以上是控制台打印出来的东西。

map.get(a).toString().equals("");一直是false
map.get(a)!=null;一直是true

ringa_leeringa_lee2802 天前3039

全部回覆(4)我來回復

  • ringa_lee

    ringa_lee2017-04-18 09:09:32

    if(map.get(a)==null)不就可以判斷它是不是空嗎

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:09:32

    在java裡null與空數組不是同一個概念。如果要判斷數組是否為空,可以這樣寫。

    `
    if (map.get(a) == null || map.get(a).size() == 0)
    `

    如果是生產環境下,建議使用工具類,例如apache common或者spring都提供CollectionUtils.isEmpty(map.get(a))

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 09:09:32

    如果一個 ArrayList 已經實例化,那肯定不等於 null 了。
    既然可以執行 toString 方法而不報錯,一定是實例化過的。因為 toString 是頂級父類別 Object 的方法,沒有實例化的物件怎麼可能有這個方法。

    ArrayList list = new ArrayList();
    System.out.println(list == null);  // false
    
    ArrayList list1 = null;
    System.out.println(list1.toString()); // 空指针

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:09:32

    map.get(a).toString().equals("");一直是false

    你印出來的結果a**[]可以看出来map.get(a).toString()不是空字符串,而是[],因此"[]".equals("")總是false

    map.get(a)! =null;一直都是true

    如果map.get(a).toString()没抛空指针异常,那么map.get(a)必定是非空的

    判斷空

    如果key對應的值總是ArrayList,那麼可以用以下方法:

    map.get(a) == null || map.get(a).isEmpty()

    回覆
    0
  • 取消回覆