1.概念
不可变集合就是定义完成之后不可以进行修改,添加,删除等操作的集合
2.创建不可变集合的书写格式
在List,Set,Map接口中都存在静态的of方法,可以获取一个不可变的集合
⑴List的不可变集合
如图:创建的不可变集合只能查询,不能进行修改
⑵Set的不可变集合
Set的不可变集合与List一样,但是Set集合中不能有重复元素!
⑶Map的不可变集合
如图:每两个元素为一个键值对
①Map.of的细节
Ⅰ. Map集合中的键不能重复
Ⅱ. Map里面的of方法最多只能传递20个参数,也就是10个键值对
查看Map. of的底层源码,Map.of只能传递20个参数
为什么参数会有上限?它难道不能像List和Set一样都使用可变参数定义吗?
假如我们想要传递多个键值对,那么就要给键和值定义为可变参数
但是方法形参中只能存在一个可变参数!
②Map. ofEntries
若我们想要在Map的不可变集合中填写大于10个的键值对对象,我们不能使用of,但是我们可以使用ofEntries存储多个键值对对象
static<K,V> Map<K, V> ofEntries( Entry<? extends K,? extends V>... entries)
如图:我们要将一个Map集合转变为不可变集合,就要利用ofEntries方法,先利用entrySet方法获取map集合的键值对对象集合,再转变为数组,传入ofEntries中获取
③Map.copyOf
在JDK10的时候,Map接口中引用了一个新方法copyof,结合了上面的两种创建不可变集合的方式