對於List、Set和Map的初始值,對於初學者來說容易混淆,所以在進行為空判斷的時候會容易出錯。為了能更好的使用集合,我總結一下:
一、List的初始值:
先初始化一個List,輸出它的值:
List<Map<String,Object>> list = new ArrayList<>(); System.out.println(list);
輸出結果是:[ ]
也就是說,初始化的List,輸出結果並不是null或者“”,如果用list!=null進行判斷的話,即使list里邊沒有值,但是也一定不是null,所以這種判斷是不准確的。在java API文檔中,List的判斷應該是isEmpty()方法。isEmpty()的解釋是:如果列表不包含元素,則返回 true。然而在List中,如果判斷List里邊是否有值,還有size()。size()的解釋是:返回列表中的元素數。所以判斷list中是否有元素的時候,用list.size()>0即可。
//判斷為空 if(list.isEmpty()){} //判斷有無元素 if(list.size()>0){} //判斷不為空並且有元素,個人覺得這里只用list.size()>0就可以 if(!list.isEmpty()&&list.size()>0){}
二、Set的初始化
其實Set和List都是繼承自Collection,所以Set和List是一樣的,我就只貼出Set測試的代碼及其輸出值:
Set<String> set = new HashSet<>(); System.out.println("set=" + set); // 判斷為空 if (set.isEmpty()) { System.out.println(true); } // 判斷有無元素 if (set.size() > 0) { System.out.println(true); } // 判斷不為空並且有元素,個人覺得這里只用list.size()>0就可以 if (!set.isEmpty() && set.size() > 0) { System.out.println(true); }
輸出值為:
set=[] true
三、Map初始值
//初始化空的map Map<String,Object> map = new HashMap<>(); System.out.println("map="+map);
System.out.println(map.size()); if(map.isEmpty()){ System.out.println(true); } if(map.size()>0){ System.out.println(true); }
輸出為:
map={}
0 true
這是一個空的Map,它的初始化值是:{},它里邊有0個鍵值對;所以如果判斷Map的值是否有無鍵值對的時候應該用isEmpty()或者是size();
再看一個map里邊有鍵值對的例子,驗證下操作:
//初始化map,並put上值 Map<String,Object> map1 = new HashMap<>(); map1.put("name", "zhangsan"); map1.put("age", "27"); if(!map1.isEmpty()){ System.out.println("map1="+map1); } if(map1.size()>0){ System.out.println("map1.size()="+map1.size()); }
輸出結果為:
map1={name=zhangsan, age=27}
map1.size()=2