欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中l(wèi)ist集合為空或?yàn)閚ull的區(qū)別說明

 更新時(shí)間:2021年11月12日 11:53:30   作者:Architect_csdn  
這篇文章主要介紹了Java中l(wèi)ist集合為空或?yàn)閚ull的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

list集合為空或?yàn)閚ull的區(qū)別

javaWeb項(xiàng)目,調(diào)用第三方系統(tǒng)獲取第三方數(shù)據(jù)庫數(shù)據(jù)時(shí) list 集合沒有數(shù)據(jù)時(shí) 后臺(tái)報(bào)空指針

發(fā)現(xiàn)原因

后臺(tái)查詢數(shù)據(jù)庫總記錄數(shù)為0(數(shù)據(jù)庫確實(shí)無數(shù)據(jù))時(shí),我直接設(shè)置查詢對(duì)象集合list置為null, 然后返給頁面了,

解決方法

后臺(tái)查詢數(shù)據(jù)庫總記錄數(shù)為0(數(shù)據(jù)庫確實(shí)無數(shù)據(jù))時(shí),將list 重新new一個(gè),再返給頁面,

這樣就后臺(tái)控制臺(tái)就不會(huì)報(bào)空指針啦

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

這樣判斷我發(fā)現(xiàn)當(dāng)集合為null的時(shí)候 , 雖然重新new啦一個(gè)集合 , 但是后臺(tái)還是會(huì)報(bào)空指針

之后我這樣判斷就好啦

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

出現(xiàn)這個(gè)問題,是因?yàn)槲覍?duì)Java List集合是否為空還是為null的理解不夠深刻。

我記錄如下要點(diǎn)

1.判斷一個(gè)list集合是否為空

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

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

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

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

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

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

4.list等于null,可理解為沒有對(duì)list集合分配內(nèi)存空間,實(shí)際上壓根就不存在。

所以一般的判斷是

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

判斷List集合為空或null

判斷List集合是否為空

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

新建List對(duì)象,默認(rèn)是為空,即沒有數(shù)據(jù),而不是null

如:

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

測(cè)試下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,可以理解為對(duì)list集合分配內(nèi)存空間,但數(shù)據(jù)為空

而list2為null,系統(tǒng)并沒有weiqi為其分配空間

網(wǎng)上有個(gè)例子,list1可以比喻成空的水杯,沒有水,所以size為0

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

List集合判斷2個(gè)條件

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

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

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

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java基于字符流形式讀寫數(shù)據(jù)的兩種實(shí)現(xiàn)方法示例

    Java基于字符流形式讀寫數(shù)據(jù)的兩種實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Java基于字符流形式讀寫數(shù)據(jù)的兩種實(shí)現(xiàn)方法示,結(jié)合實(shí)例形式分析了java逐個(gè)字符讀寫及使用緩沖區(qū)進(jìn)行讀寫操作的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01
  • java捕獲AOP級(jí)別的異常并將其傳遞到Controller層

    java捕獲AOP級(jí)別的異常并將其傳遞到Controller層

    如何在一個(gè)現(xiàn)代的Java應(yīng)用中,捕獲AOP(面向切面編程)級(jí)別的異常,并將這些異常傳遞到Controller層進(jìn)行合適的處理,異常處理在構(gòu)建可靠的應(yīng)用程序中起著關(guān)鍵作用,而AOP則可以幫助我們更好地管理和組織代碼,我們將深入研究如何結(jié)合AOP和異常處理來構(gòu)建健壯的應(yīng)用
    2023-09-09
  • Java OpenCV實(shí)現(xiàn)人臉識(shí)別過程詳解

    Java OpenCV實(shí)現(xiàn)人臉識(shí)別過程詳解

    這篇文章主要介紹了Java OpenCV實(shí)現(xiàn)人臉識(shí)別過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 淺談SpringBoot中properties、yml、yaml的優(yōu)先級(jí)

    淺談SpringBoot中properties、yml、yaml的優(yōu)先級(jí)

    優(yōu)先級(jí)低的配置會(huì)被先加載,所以優(yōu)先級(jí)高的配置會(huì)覆蓋優(yōu)先級(jí)低的配置,本文就來介紹一下SpringBoot中properties、yml、yaml的優(yōu)先級(jí),感興趣的可以了解一下
    2023-08-08
  • 分析Java中ArrayList與LinkedList列表結(jié)構(gòu)的源碼

    分析Java中ArrayList與LinkedList列表結(jié)構(gòu)的源碼

    這篇文章主要介紹了Java中ArrayList與LinkedList列表結(jié)構(gòu)的源碼,文章最后對(duì)LinkedList和ArrayList以及Vector的特性有一個(gè)對(duì)比總結(jié),需要的朋友可以參考下
    2016-05-05
  • java實(shí)現(xiàn)微信企業(yè)付款到個(gè)人

    java實(shí)現(xiàn)微信企業(yè)付款到個(gè)人

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)微信企業(yè)付款到個(gè)人功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 關(guān)于java編譯過程中的bug說明

    關(guān)于java編譯過程中的bug說明

    本篇文章是對(duì)java編譯過程中的bug進(jìn)行了詳細(xì)的說明介紹,需要的朋友參考下
    2013-05-05
  • Java volatile的適用場(chǎng)景實(shí)例詳解

    Java volatile的適用場(chǎng)景實(shí)例詳解

    在本文里我們給大家整理了一篇關(guān)于Java volatile的適用場(chǎng)景實(shí)例內(nèi)容和知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • mybatis-plus  mapper中foreach循環(huán)操作代碼詳解(新增或修改)

    mybatis-plus mapper中foreach循環(huán)操作代碼詳解(新增或修改)

    這篇文章主要介紹了mybatis-plus mapper中foreach循環(huán)操作代碼詳解(新增或修改),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 淺談JDK14性能管理工具之jmap和jhat

    淺談JDK14性能管理工具之jmap和jhat

    我們?cè)趯懘a的過程中,經(jīng)常會(huì)遇到內(nèi)存泄露的問題,比如某個(gè)集合中的對(duì)象沒有被回收,或者內(nèi)存出現(xiàn)不明原因的增長。這些都是需要我們來定位的問題,我們可以使用jmap和jhat來對(duì)java程序中的內(nèi)存對(duì)象進(jìn)行分析。
    2021-06-06

最新評(píng)論