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

Java Collections.EMPTY_LIST與Collections.emptyList()的區(qū)別

 更新時(shí)間:2021年11月16日 15:31:44   作者:范亞明  
這篇文章主要介紹了Java Collections.EMPTY_LIST與Collections.emptyList()的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Collections.EMPTY_LIST與Collections.emptyList()的區(qū)別

Collections.EMPTY_LIST返回的是一個(gè)空的List。為什么需要空的List呢?有時(shí)候我們?cè)诤瘮?shù)中需要返回一個(gè)List,但是這個(gè)List是空的,如果我們直接返回null的話,調(diào)用者還需要進(jìn)行null的判斷,所以一般建議返回一個(gè)空的List。

Collections.EMPTY_LIST返回的這個(gè)空的List是不能進(jìn)行添加元素這類操作的。這時(shí)候你有可能會(huì)說(shuō),我直接返回一個(gè)new ArrayList()唄,但是new ArrayList()在初始化時(shí)會(huì)占用一定的資源,所以在這種場(chǎng)景下,還是建議返回Collections.EMPTY_LIST。

Collections. emptyList()返回的也是一個(gè)空的List,它與Collections.EMPTY_LIST的唯一區(qū)別是,Collections. emptyList()支持泛型,所以在需要泛型的時(shí)候,可以使用Collections. emptyList()。

Collections.EMPTY_MAP和Collections.EMPTY_SET同理。

Collections.EMPTY_LIST的實(shí)現(xiàn)代碼

    /**
     * The empty list (immutable).  This list is serializable.
     *
     * @see #emptyList()
     */
    @SuppressWarnings("unchecked")
    public static final List EMPTY_LIST = new EmptyList<>();

Collections. emptyList()的實(shí)現(xiàn)代碼

 /**
     * Returns the empty list (immutable).  This list is serializable.
     *
     * <p>This example illustrates the type-safe way to obtain an empty list:
     * <pre>
     *     List<String> s = Collections.emptyList();
     * </pre>
     * Implementation note:  Implementations of this method need not
     * create a separate <tt>List</tt> object for each call.   Using this
     * method is likely to have comparable cost to using the like-named
     * field.  (Unlike this method, the field does not provide type safety.)
     *
     * @see #EMPTY_LIST
     * @since 1.5
     */
    @SuppressWarnings("unchecked")
    public static final <T> List<T> emptyList() {
        return (List<T>) EMPTY_LIST;
}

使用Collections.emptyMap()引起的一個(gè)奇怪的問(wèn)題

以下是控制臺(tái)信息

第二行是很不起眼的一條異常信息,不知為何沒(méi)有把整個(gè)錯(cuò)誤堆棧輸出。

一開(kāi)始沒(méi)有注意到這條異常信息,于是設(shè)斷點(diǎn),調(diào)試,結(jié)果每次執(zhí)行幾句就莫名其妙地轉(zhuǎn)入ThreadPoolExecutor中執(zhí)行。

最后注意到上面的異常信息后,發(fā)現(xiàn)對(duì)一個(gè)類型為Map的成員變量初始化有問(wèn)題:

protected Map<String, String> optionalStrParams = Collections.emptyMap();

如此修改:

protected Map<String, String> optionalStrParams = new HashMap<String, String>();

我的本意是初始化為一個(gè)空的Map,EmptyMap在此場(chǎng)景下不合適。

EmptyMap的背景

在某些情況下,我們經(jīng)常需要發(fā)揮一個(gè)空的集合對(duì)象,比如說(shuō)在數(shù)據(jù)查詢時(shí),并不需要發(fā)揮一個(gè)NULL或是異常,那么就可以返回一個(gè)空的集合對(duì)象。

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

相關(guān)文章

  • java對(duì)象list使用stream根據(jù)某一個(gè)屬性轉(zhuǎn)換成map的3種方式舉例

    java對(duì)象list使用stream根據(jù)某一個(gè)屬性轉(zhuǎn)換成map的3種方式舉例

    開(kāi)發(fā)小伙伴們通常會(huì)需要使用到對(duì)象和Map互相轉(zhuǎn)換的開(kāi)發(fā)場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于java對(duì)象list使用stream根據(jù)某一個(gè)屬性轉(zhuǎn)換成map的3種方式,需要的朋友可以參考下
    2024-01-01
  • Spring?Boot常用的參數(shù)驗(yàn)證技巧和使用方法

    Spring?Boot常用的參數(shù)驗(yàn)證技巧和使用方法

    Spring Boot是一個(gè)使用Java編寫的開(kāi)源框架,用于快速構(gòu)建基于Spring的應(yīng)用程序,這篇文章主要介紹了Spring?Boot常用的參數(shù)驗(yàn)證技巧和使用方法,需要的朋友可以參考下
    2023-09-09
  • Java語(yǔ)言描述二叉樹的深度和寬度

    Java語(yǔ)言描述二叉樹的深度和寬度

    這篇文章主要介紹了Java語(yǔ)言描述二叉樹的深度和寬度,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11
  • Java超詳細(xì)講解設(shè)計(jì)模式中的命令模式

    Java超詳細(xì)講解設(shè)計(jì)模式中的命令模式

    命令模式是將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化,對(duì)請(qǐng)求排隊(duì)或者對(duì)請(qǐng)求做日志記錄,以及可以支持撤銷的操作
    2022-04-04
  • 詳解Spring AOP的原理與實(shí)現(xiàn)方式

    詳解Spring AOP的原理與實(shí)現(xiàn)方式

    Spring框架是一個(gè)功能強(qiáng)大且靈活的企業(yè)級(jí)應(yīng)用程序開(kāi)發(fā)框架,其中最重要的特性之一就是面向切面編程(AOP),我們今天這篇文章將從源碼和案例的角度詳細(xì)介紹Spring AOP的思想、原理和實(shí)現(xiàn)方式
    2023-07-07
  • 詳解Spring中Spel表達(dá)式和el表達(dá)式的區(qū)別

    詳解Spring中Spel表達(dá)式和el表達(dá)式的區(qū)別

    在?Java?開(kāi)發(fā)中,表達(dá)式語(yǔ)言是一種強(qiáng)大的工具,而SpEL?表達(dá)式與EL?表達(dá)式是我們常常遇到兩種表達(dá)式語(yǔ)言,下面我們就來(lái)看看它們的具體使用與區(qū)別吧
    2023-07-07
  • java枚舉enum,根據(jù)value值獲取key鍵的操作

    java枚舉enum,根據(jù)value值獲取key鍵的操作

    這篇文章主要介紹了java枚舉enum,根據(jù)value值獲取key鍵的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • SpringBoot2.x中management.security.enabled=false無(wú)效的解決

    SpringBoot2.x中management.security.enabled=false無(wú)效的解決

    這篇文章主要介紹了SpringBoot2.x中management.security.enabled=false無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot集成Beetl后統(tǒng)一處理頁(yè)面異常的方法

    SpringBoot集成Beetl后統(tǒng)一處理頁(yè)面異常的方法

    這篇文章主要介紹了SpringBoot集成Beetl后統(tǒng)一處理頁(yè)面異常的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 基于SSM框架實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)的示例代碼

    基于SSM框架實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)的示例代碼

    這篇文章主要介紹了基于SSM框架實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論