【java基础】如何创建20元素以上的不可变集合?(Map.of()无法创建20个以上)

背景

由于Map.of()(jdk-9出现)创建的不可变集合无法超过20个参数,所以可以使用下面的办法创建

Map<Object,Object> map = Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));

原理

arr1装的下使用arr1,否则新创建。

Map<String,String> hm = new HashMap<>();
hm.put("张三","南京");
hm.put("李四","北京");

Set<Map<String,String>> entries = hm.entrySet();
Map.Entry[] arr1 = new Map.Entry[0];
Map.Entry[] arr2 = entries.toArray(arr1);
Map map = Map.ofEntries(arr2);

改进

这种方法写起来比较麻烦,所以java将其封装进了Map.copyOf()(jdk-10出现),这个方法可以将可变或者不可变的集合返回一个不可变集合,没有参数大小限制。

Map<String,String> map = Map.copyOf(hm);
posted @ 2023-01-09 19:11  求道之愚者  阅读(181)  评论(0)    收藏  举报