文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏
参与翻译: CY2 (2), qianfangorg (1), 边城 (1)

Java 9 为创建不可变的 List、Set、Map 和 Map.Entry 对象提供了工厂方法,它们可以用来创建空的或非空的集合。

对于 Java 8 或更早的版本,我们通常会用 Collections 类提供的 “unmodifiableXXX” 方法。比如说想要一个不可修改的 List,那么可以用 Collections.unmodifiableList 方法。

不过这种用法让语句看上去很啰嗦,所以 Java 9 直接在 List、Set 和 Map 接口上加了几个工具方法,来达到同样的目的。

第 1 段(可获 1.24 积分)

这些有用的方法用于创建拥有 1-10 个元素的非空不可变映射表。这些方法是是基于这样的情况来设计的:我们可以添加 10 个以内的元素到不可变的 List、Set、Map 和 Map.Entry 对象。

如果我们需要有一个不可变集合,其大小在 10 以内,就可以使用这个功能。

这些工具方法的特点

  1. 这些方法都是不可变的。我们不能对集合进行添加、删除或更新操作。如果我们尝试进行添加、删除或更新变量,会抛出 unsupportedOperationException。Image title

  2. 它不允许空值,如果我们尝试往集合中添加 null,会抛出空指针异常。Image title

  3. 如果元素是可序列化的,它们就是可序列化的。

第 2 段(可获 1.68 积分)

示例

List: (包含值的列表和空列表)

List<String> list= List.of("apple","bat");
List<String> list= List.of();

Image title

Set: (包含值的集合和空集合)

Set<String> set= Set.of("apple","bat");
Set<String> set= Set.of();

Image title

Map: (包含值的 Map 和空 Map)

Map<Integer,String> emptyMap = Map.of()
Map<Integer,String> map = Map.of(1, "Apple", 2, "Bat", 3, "Cat")

Image title

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(2,"Bat")
Map.Entry<Integer,String> mapEntry3 = Map.entry(3,"Cat")
Map<Integer,String> mapEntry = Map.ofEntries(mapEntry1,mapEntry2,mapEntry3)
第 3 段(可获 0.39 积分)

Image title

说明:Java 9 自带了一个叫 JShell 的命令行交互工具,你可以用它在不创建类和 main 方法的前提下执行 Java 代码。本文上面的这些例子,我都是用 JShell 来进行演示的。

第 4 段(可获 0.36 积分)

文章评论