最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

Collections.EMPTY_MAP和Collections.EMPTY_SET同理。

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

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

Collections. emptyList()的實現(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()引起的一個奇怪的問題

以下是控制臺信息

第二行是很不起眼的一條異常信息,不知為何沒有把整個錯誤堆棧輸出。

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

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

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

如此修改:

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

我的本意是初始化為一個空的Map,EmptyMap在此場景下不合適。

EmptyMap的背景

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

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

相關(guān)文章

  • java設(shè)計模式之工廠方法詳解

    java設(shè)計模式之工廠方法詳解

    這篇文章主要為大家詳細介紹了java設(shè)計模式之工廠方法的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 關(guān)于ThreadLocal和InheritableThreadLocal解析

    關(guān)于ThreadLocal和InheritableThreadLocal解析

    這篇文章主要介紹了關(guān)于ThreadLocal和InheritableThreadLocal解析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 詳解Java中字典樹(Trie樹)的圖解與實現(xiàn)

    詳解Java中字典樹(Trie樹)的圖解與實現(xiàn)

    Trie又稱為前綴樹或字典樹,是一種有序樹,它是一種專門用來處理串匹配的數(shù)據(jù)結(jié)構(gòu)。本文將利用圖解詳細講解Trie樹的實現(xiàn),需要的可以參考一下
    2022-05-05
  • springboot2.5.0和redis整合配置詳解

    springboot2.5.0和redis整合配置詳解

    本篇文章向大家介紹springboot2.5.0 整合 redis 配置方法,教大家在pom添加依賴的方法如何調(diào)用redis,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • IntelliJ IDEA 如何徹底刪除項目的步驟

    IntelliJ IDEA 如何徹底刪除項目的步驟

    本篇文章主要介紹了IntelliJ IDEA 如何徹底刪除項目的步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • java中實現(xiàn)map與對象相互轉(zhuǎn)換的幾種實現(xiàn)

    java中實現(xiàn)map與對象相互轉(zhuǎn)換的幾種實現(xiàn)

    這篇文章主要介紹了java中實現(xiàn)map與對象相互轉(zhuǎn)換的幾種實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 基于logback 實現(xiàn)springboot超級詳細的日志配置

    基于logback 實現(xiàn)springboot超級詳細的日志配置

    java web 下有好幾種日志框架,比如:logback,log4j,log4j2(slj4f 并不是一種日志框架,它相當于定義了規(guī)范,實現(xiàn)了這個規(guī)范的日志框架就能夠用 slj4f 調(diào)用)。這篇文章主要介紹了基于logback springboot超級詳細的日志配置,需要的朋友可以參考下
    2019-06-06
  • java基于servlet的文件異步上傳

    java基于servlet的文件異步上傳

    本篇文章主要介紹了java基于servlet的文件異步上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • Java使用字節(jié)流實現(xiàn)圖片音頻的復(fù)制

    Java使用字節(jié)流實現(xiàn)圖片音頻的復(fù)制

    今天帶大家學習Java的相關(guān)知識,文章圍繞著Java如何使用字節(jié)流實現(xiàn)圖片音頻的復(fù)制展開,文中有非常詳細的介紹,需要的朋友可以參考下
    2021-06-06
  • java線程間通信的通俗解釋及代碼示例

    java線程間通信的通俗解釋及代碼示例

    這篇文章主要介紹了java線程間通信的通俗解釋,介紹了線程通信中的幾個相關(guān)概念,然后分享了線程通信的實現(xiàn)方式及代碼示例,具有一定參考價值 ,需要的朋友可以了解下。
    2017-11-11

最新評論

冷水江市| 胶州市| 伊金霍洛旗| 怀远县| 寿阳县| 即墨市| 青海省| 三门县| 宜春市| 泸溪县| 吴旗县| 通辽市| 应城市| 阿拉善左旗| 抚远县| 武义县| 徐水县| 长武县| 东乌| 达拉特旗| 霍城县| 华亭县| 寿阳县| 玉溪市| 汉源县| 浮梁县| 额济纳旗| 南和县| 喜德县| 凌云县| 普宁市| 招远市| 土默特右旗| 高台县| 姜堰市| 九龙县| 金乡县| 曲水县| 江山市| 巩义市| 阳曲县|