平台之所以谓之平台,以其能建立一个生态,并与之外围达成共赢。霸道点的平台也会反噬外围生态,像微软集成浏览器,媒体播放器。还有即将的 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
, Set
,Map
中的 of(...)
方法就对了。
Java 9 之前,当我们需要集合相关的操作,两个选择:
- Apache Commons Collections 的几个类 ListUtils, SetUtils, MapUtils, 和 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) //创建不可变集合 - Guava 的几个类 ImmutableList, ImmutableSet, 和 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>