不可变集合:不可以被修改的集合
创建不可变集合的应用场景
- 如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。
- 当集合对象被不可信的库调用时,不可变形式是安全的。
简单理解:不想让别人修改集合中的内容
不可变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的方法