随着java9的临近,让我们看一下使用新的REPL和新工具方法一起在集合中的使用。
java9已经创建了工厂方法去创建不可变得LIsts,Sets,Maps和Map.Entry对象。这些工具方法会被用于创建空的或非空的集合对象。
在java以及早期版本,我们可以使用Collections类的工具方法例如像unmodifiableXXX去创建符合我们需求的不可变的集合。如果我们想去创建一个不可变的LIst,我们可以使用Collections.unmodifiableList方法。
但是这些Collections.unmodifiableXXX相当的冗长与乏味。为了克服这些缺点,在java9中为List,Set和Map提供了一系列接口去实现同样的功能。
这些有用的方法被用于去创建一个新的非空的不可变的带1-10个元素的Map。这种方法被设计用于这些场景,诸如我们可以只增加10个元素到不可变的LIst,Set,Mao和Map.Entry对象。
我们可以使用这个特性,当我们对一个持有最大元素个数为10或更少的不可变集合有需求时
这些工具方法的特征
1.这些方法是不可变的,我们不能增加删除或更新元素,如果我们尝试去做这些操作,方法将抛出unsupportedOperationException
2.这些方法不允许控制,如果我们增加控制,他讲抛出nullPointException
3.如果所有元素都是序列化的,那么集合才是序列化的
例子
List:(有值list与空list)
List<String> list=List.of("apple","bat");
List<String> list=List.of();
Set:(有值set与空set)
Set<String> set=Set.of("apple","bat");
Set<String> set=Set.of();
Map:(有值map与空map)
Map<Integer,String> set=Set.of(1,"apple",2,"bat",3,"cat");
Map<Integer,String> emptyMap=Map.of();
Map.Entry:(有值Map.Entry与空Map.Entry)
Map<Integer,String> emptyEntry=Map.ofEntries();
Map.Entry<Integer,String> mapEntry1=Map.entry(1,"Apple");
Map.Entry<Integer,String> mapEntry2=Map.entry(1,"bat");
Map.Entry<Integer,String> mapEntry3=Map.entry(1,"cat");
Map<Integer,String> mapEntry=Map.ofEntries(emptyEntry1,emptyEntry2,emptyEntry3);
注意:java9可以使用Jshell(REPL)去写代码并且立即执行不需要class文件和main入口方法