不可变集合的定义
不可变集合,顾名思义,就是不可以被修改的集合。一旦该集合创建完毕,其长度和内容均不能改变(不能增加或者减少元素),只能查找集合内的元素。
如果在创建集合的过程中不希望别人修改集合中的内容,那么就可以创建不可变集合,使得别人在使用此集合的时候只能进行查找操作(例如斗地主的牌,电脑硬件型号等)。
创建不可变集合的书写格式
在List,Set,Map接口中,都存在 静态的of方法
,可以获取一个不可变的集合
public class demo01 {
public static void main(String[] args) {
/*
创建不可变的List集合
"张三","李四","王五","赵六"
*/
//一旦创建完毕之后,是无法进行修改的,在下面的操作只能进行查询
List<String> list = List.of("张三","李四","王五","赵六");
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
System.out.println(list.get(3));
}
}
注意:这个集合不能添加,不能删除,不能修改。
代码结果运行如下:
张三
李四
王五
赵六
使用三种遍历方式进行遍历
//使用增强for进行遍历
for (String str : list) {
System.out.println(str);
}
System.out.println("======================");
//使用迭代器进行遍历
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("======================");
//使用for循环遍历得到每个值
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
代码结果运行如下:
张三
李四
王五
赵六
======================
张三
李四
王五
赵六
======================
张三
李四
王五
赵六
创建不可变的Map集合
public static void main(String[] args) {
/* 创建Map不可变集合,键值对的数量不超过10个*/
//1.创建一个普通的集合
HashMap<String,String>hm=new HashMap<>();
hm.put("zhangsan","tianjin");
hm.put("lisi","nanjing");
hm.put("wangwu","shanghai");
//2.利用上面的数据来获取一个不可变的集合
//获取到所有的键值对对象(entry对象)
Set<Map.Entry<String,String>>entries = hm.entrySet();
//把entries变成一个数组
Map.Entry[]arr1=new Map.Entry[0];
/*toArray方法会在底层比较集合长度跟数组长度两者的大小
如果集合长度>数组长度:重新创建数组
如果集合长度<=数组长度:就不会创建新的数组,而是直接用*/
Map.Entry[]arr2=entries.toArray(arr1);
Map map=Map.ofEntries(arr2);
//获取到hm集合里面所有的键值对对象,把他变成数组,数组里面装的是entry对象
Map<Objects,Objects> map1=Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));
Map<String,String> map2=Map.copyOf(hm);
map2.put("zhangsan","tianjin");
}