System.out.println("a**"+map.get(a).getClass());System.out.println("a**"+map.get(a));
-------------分割线------------a**class java.util.ArrayLista**[]
以上是控制台打印出来的东西。
map.get(a).toString().equals("");一直是falsemap.get(a)!=null;一直是true
ringa_lee
if(map.get(a)==null)不就可以判斷它是不是空嗎
if(map.get(a)==null)
在java裡null與空數組不是同一個概念。如果要判斷數組是否為空,可以這樣寫。
`if (map.get(a) == null || map.get(a).size() == 0)`
如果是生產環境下,建議使用工具類,例如apache common或者spring都提供CollectionUtils.isEmpty(map.get(a))
apache common
CollectionUtils.isEmpty(map.get(a))
如果一個 ArrayList 已經實例化,那肯定不等於 null 了。 既然可以執行 toString 方法而不報錯,一定是實例化過的。因為 toString 是頂級父類別 Object 的方法,沒有實例化的物件怎麼可能有這個方法。
ArrayList list = new ArrayList(); System.out.println(list == null); // false ArrayList list1 = null; System.out.println(list1.toString()); // 空指针
你印出來的結果a**[]可以看出来map.get(a).toString()不是空字符串,而是[],因此"[]".equals("")總是false
a**[]
map.get(a).toString()
[]
"[]".equals("")
如果map.get(a).toString()没抛空指针异常,那么map.get(a)必定是非空的
map.get(a)
如果key對應的值總是ArrayList,那麼可以用以下方法:
map.get(a) == null || map.get(a).isEmpty()
if(map.get(a)==null)
不就可以判斷它是不是空嗎在java裡null與空數組不是同一個概念。如果要判斷數組是否為空,可以這樣寫。
`
if (map.get(a) == null || map.get(a).size() == 0)
`
如果一個 ArrayList 已經實例化,那肯定不等於 null 了。
既然可以執行 toString 方法而不報錯,一定是實例化過的。因為 toString 是頂級父類別 Object 的方法,沒有實例化的物件怎麼可能有這個方法。
map.get(a).toString().equals("");一直是false
你印出來的結果
a**[]
可以看出来map.get(a).toString()
不是空字符串,而是[]
,因此"[]".equals("")
總是falsemap.get(a)! =null;一直都是true
如果
map.get(a).toString()
没抛空指针异常,那么map.get(a)
必定是非空的判斷空
如果key對應的值總是ArrayList,那麼可以用以下方法: