【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);
作者:blanset
出处:https://www.cnblogs.com/blanset/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。