Java—不可变集合
不可变集合:不可以被修改的集合
创建不可变集合的应用场景
- 如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。
- 当集合对象被不可信的库调用时,不可变形式是安全的。
简单理解:不想让别人修改集合中的内容
不可变list集合代码演示:
import java.util.List;
public class text {
public static void main(String[] args) {
//创建不可变集合
List<String>list = List.of("张三","王五","找六");
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
for(String s:list){
System.out.println(s);
}
list.remove("王五");//不可变集合不能进行删除
//这里代码会报错
}
}
不可变set集合代码演示:注意set集合无索引,元素唯一。
import java.util.List;
import java.util.Set;
public class text {
public static void main(String[] args) {
//创建不可变集合
Set<String> set= Set.of("张三","李四","王五");
for(String s:set){
System.out.println(s);
}
set.remove("王五");//不可变集合不能进行删除
//这里代码会报错
}
}
不可变map集合代码演示:注意
细节1:键是不能重复的
细节2:Map里面的of方法,参数是有上限的,最多只能传递20个参数,10个键值对
import java.util.Map;
import java.util.Set;
public class text {
public static void main(String[] args) {
//创建不可变集合
Map<String,String>map=Map.of("a","1","b","2");
Set<String> keys = map.keySet();
for(String key:keys){
String value=map.get(key);
System.out.println(key+"="+value);
}
}
}
创建Map的不可变集合,键值对的数量超过10个
Map<String,String> m = Map.copyOf(map);
1.不可变集合的特点?
●定义完成后不可以修改,或者添加、删除
2.如何创建不可变集合?
●List、Set、Map接口中,都存在of方法可以创建不可变集合
3.三种方式的细节
●List:直接用
●Set:元素不能重复
●Map:元素不能重复、键值对数量最多是10个。
超过10个用ofEntries方法或copyof的方法