Java9新特性系列(便利的集合工厂方法)
Java8前时代
在Java8版本以前,创建一个只读不可变的集合,先要初始化,然后塞数据,然后置为只读:
1 | Set<String> set = new HashSet<>(); |
上面的方式占用太多行,能不能用单行表达式呢?用如下方式:
1 | Set<String> set = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("a", "b", "c"))); |
Java8
在Java8中可以用流的方法创建,具体可以看之前的一篇文章Java8新特性系列(Stream),实现方法如下:
1 | Set<String> set = Collections.unmodifiableSet(Stream.of("a", "b", "c").collect(toSet())); |
Java9
Java9中引入了很多方便的API,Convenience Factory Methods for Collections,即集合工厂方法,官方Feature,上述的实现中Java9中有如下实现方式:
1 | Set<String> set = Collections.unmodifiableSet(new HashSet<String>() {{ |
也可以用如下方式:
1 | Set<String> set = Set.of("a", "b", "c"); |
Java9中List
提供了一系列类似的方法:
1 | /** |
Java9中Set、Map都有类似的方法,创建只读不可变的集合:
1 | Set.of() |