Java中list集合為空或為null的區別說明

list集合為空或為null的區別

javaWeb項目,調用第三方系統獲取第三方數據庫數據時 list 集合沒有數據時 後臺報空指針

發現原因

後臺查詢數據庫總記錄數為0(數據庫確實無數據)時,我直接設置查詢對象集合list置為null, 然後返給頁面瞭,

解決方法

後臺查詢數據庫總記錄數為0(數據庫確實無數據)時,將list 重新new一個,再返給頁面,

這樣就後臺控制臺就不會報空指針啦

if(list!=null && !list.isEmpty()){ 
//這個裡面取list中的值 
}else{ 
//做其他處理 }

這樣判斷我發現當集合為null的時候 , 雖然重新new啦一個集合 , 但是後臺還是會報空指針

之後我這樣判斷就好啦

if(list!=null && list.size()!=0{ 
//這個裡面取list中的值 
}else{ 
//做其他處理 }

出現這個問題,是因為我對Java List集合是否為空還是為null的理解不夠深刻。

我記錄如下要點

1.判斷一個list集合是否為空

在Java中,list集合為空(集合中無元素),還是為null,這是兩碼事。

舉例,我有一個空著的水杯(list),而你沒有,那你是null,我的size為0。你想裝水就需要自己去買個水杯(new ArrayList();),但是我就可以直接裝水(list.add(水))。你要是沒有杯子直接倒水,水就流出去啦(空指針異常)。

2.那麼,我們什麼時候用null,什麼時候用isEmpty()或list.size()呢?

isEmpty() 或者(list.size() == 0)用於判斷List內容是否為空,即集合中一個元素也沒有, 但是使用isEmpty()和size()的前提是,list是一個空集合,而不是null,所以為瞭避免異常,建議在使用或賦值list集合之前,做一次空集合創建處理,進行內存空間分配,即:List list = new ArrayList();

3.list.isEmpty()和list.size()==0 沒有區別

isEmpty()判斷有沒有元素,而size()返回有幾個元素,如果判斷一個集合有無元素,建議用isEmpty()方法,看起來清晰明瞭。

4.list等於null,可理解為沒有對list集合分配內存空間,實際上壓根就不存在。

所以一般的判斷是

if(list!=null && !list.isEmpty()){  
//這個裡面取list中的值  
}else{  
//做其他處理  
}

判斷List集合為空或null

判斷List集合是否為空

Java中,判斷List集合是否為空與是否為null並不相同

新建List對象,默認是為空,即沒有數據,而不是null

如:

List<User> list = new ArrayList<User>();
list1.size()==0和isEmpty()判斷的是list1內的內容為空,而不是一個空集合,null
List list2 = null;
這樣聲明的list2為null

測試下list是否為空

List<User> list1 = new ArrayList<User>();
        if (list1 != null) {
            System.out.println(list1.size() + "1");
        }
        if (list1.size() > 0) {
            System.out.println("2");
        }
        if (null == list1) {
            System.out.println("3");
        }
        if (list1.size() == 0) {
            System.out.println("4");
        }
        if (list1 != null && list1.size() == 0) {
            System.out.println("test  list==0");
        }
        if (list1 != null && list1.size() > 0) {
            System.out.println("test list>0");
        }
        List<User> list2 = null;
        System.out.println(list2 + "==>list2=null");

輸出得到:

01

4

test list==0

null==>list2=null

可以得到list1.size()為0,可以理解為對list集合分配內存空間,但數據為空

而list2為null,系統並沒有weiqi為其分配空間

網上有個例子,list1可以比喻成空的水杯,沒有水,所以size為0

而list2則沒有水杯,空指針異常

List集合判斷2個條件

if(null == list || list.size() ==0 ){
}

1.判斷null == list ,判斷是否有這個容器水杯

2.list.size() == 0,判斷容器水杯內是否有水

3.list.size()和list.isEmpty()判斷含義一致

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: