Java 9 - 快速創建不可變集合

平臺之所以謂之平臺,以其能建立一個生態,並與之外圍達成共贏。霸道點的平臺也會反噬外圍生態,像微軟集成瀏覽器,媒體播放器。還有即將的 iOS 12 要把應用商店多是收費的 AR 皮尺放到它自己系統中來,走別人的路,讓別人無路可走。從此衆泰皮尺部的唯一的生產工具就會是人手一部能安裝 iOS 12 iPhone 了。

JDK 也不例外,Java 8 之前日期庫的話 Joda-Time 是首要之選,Java 8 集成後應該是鮮有人問津。以往說到集合操作庫,有兩個選擇,其一爲 Apache Commons Collections,二爲 Google 的 Guava,當然前者與後者競爭中也早已敗下陣來,況且前者還受到 Java 8 的夾擊。而本文要說的可以說是 Java 9 把 Guava 中創建不可變集合的方式據爲已用了,直截了當的說,凡是 Java 9 後有創建不可變集合的需求,只要用三大接口 List, SetMap 中的 of(...) 方法就對了。

Java 9 之前,當我們需要集合相關的操作,兩個選擇:

  1. Apache Commons Collections 的幾個類 ListUtilsSetUtilsMapUtils, 和 CollectionsUtils。比如它們提供的以下幾些個工具方法

    ListUtils.unmodifiableList<List<? extends E> list)   //創建不可變 List
    SetUtils.emptySet()  //不可變的空  Set
    SetUtils.unmodifiableSet(Set<? extends E> set)  //創建不可變 Set
    MapUtils.unmodifiableMap(Map<? extends K, ? extends V> map)  //創建不可變 Map
    CollectionUtils.unmodifiableCollection(Collection<? extends C> collection)  //創建不可變集合

  2. Guava 的幾個類 ImmutableListImmutableSet, 和 ImmutableMap。而它們創建不可變集合的方式就是通過各自的 of(...) 方法,以 ImmutableList 爲例(其餘兩個類也類似),它有

    of(): ImmutableList<E>
    of(E element): ImmutableList<E>
    of(E e1, E e2): ImmutableList<E>
    of(E e1, E e2, E e3): ImmutableList<E>
    ......
    of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10, E e11, E e12, E... others): ImmutableList<E>

閱讀全文 >>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章