当前位置: 首页 > article >正文

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的方法


http://www.kler.cn/a/533579.html

相关文章:

  • 线程同步时定义 std::mutex 为什么要在前面添加 mutable 关键字
  • simpleQtLogger日志库的使用
  • 解决threeJS加载obj gltf和glb模型后颜色太暗的方法
  • Chromium132 编译指南 - Android 篇(一):编译前准备
  • ARM内核:嵌入式时代的核心引擎
  • 第一个Qt开发实例(一个Push Button按钮和两个Label)【包括如何在QtCreator中创建新工程、代码详解、编译、环境变量配置、测试程序运行等】
  • 最新黑马商城运行问题解决
  • 优化数据库结构
  • 服务器安装了esxi,通过esxi创建了N个虚拟机,如何实现类似于阿里云或者腾讯云的类似的云端管理虚拟机监控虚拟机的系统,要求开源,中文界面
  • 【Block总结】MDCR,多尺度深度可分离卷积,捕捉不同感受野范围的空间特征
  • LabVIEW图像采集与应变场测量系统
  • 【算法】动态规划专题③ ——二维DP python
  • 【PromptCoder + Bolt.new】Cascade模式自动生成页面和对应的路由
  • 10.单例模式 (Singleton Pattern)
  • 防火墙策略
  • react的antd表格数据回显在form表单中
  • 2024 TCSVT: LS2T2NN
  • 深入解析 Chrome 浏览器的多进程架构:标签页是进程还是线程?(中英双语)
  • 20250205——Windows系统基于ollama的DeepSeek-R1本地安装
  • 备战蓝桥杯-并查集
  • 【力扣】54.螺旋矩阵
  • PyQt6/PySide6 的 QMainWindow 类
  • 数据传输-工作习惯问题
  • CNN的各种知识点(五):平均精度均值(mean Average Precision, mAP)
  • GaussDB安全配置建议
  • 本地安装部署deepseek