首页 > 编程语言 >Java之不可变集合

Java之不可变集合

时间:2023-07-29 16:11:21浏览次数:27  
标签:Map Set Java 不可 List lists 集合

Java之不可变集合

什么是不可变集合?

  1. 不可变集合就是不可被修改的集合。

  2. 集合的数据项在创建的时候提供,并且在整个生命周期中都不可被改变。否则报错

为什么要创建不可变集合?

  1. 如果当某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的选择。

  2. 或者当集合对象被不可信的库调用时,不可变形式是安全的。

如何创建不可变集合?

在List、Set、Map接口中,都存在of方法,可以创建一个不可变集合。

方法名称说明
static <E> List <E> of(E...elements) 创建一个具有指定元素的List集合对象
static <E> Set <E> of(E...elements) 创建一个具有指定元素的Set集合对象
static <K,V> Map<K,V> of(E...elements) 创建一个具有指定元素的Map集合对象

代码实现

基于jdk17:

         //1、不可变的list集合
         List<Double> lists= List.of(700.0,564.5,156.5,500.0);
         // lists.add(689.0);会报错
         // lists.set(2 , 698.5);
         // System.out.println(lists);
         double score = lists.get(1);
         System.out.println(score);
 ​
         //2、不可变集合Set集合
         Set<String> names = Set.of("王文君","王文军","王文马","王文牛");
         // names.add("王文驴");
         System.out.println(names);
 ​
         //3、不可变的Map集合
         Map<String , Integer> maps = Map.of("华为手机",2,"苹果手机",3);
         // maps.put("vivo手机",2);
         System.out.println(maps);
 

标签:Map,Set,Java,不可,List,lists,集合
From: https://www.cnblogs.com/liandaozhanshi/p/17589978.html

相关文章

  • Java学习-1.jdk和IntelliJ IDEA安装
    1.jdk下载与安装下载地址:https://www.oracle.com/java/technologies/downloads/#jdk20-windows 环境配置:1.我的电脑–》右键属性–》高级系统设置–》环境变量2.系统变量–》新建系统变量–》完成后点击确定3.双击系统变量下的PATH变量,新建两个路径(最下方两个)4. 新......
  • WEB漏洞—反序列化之php&java(上)
    PHP反序列化原理:---未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。---其实跟文件解析差不多,都是由于传递的恶意参数被执行(序列化和反序列化相当于加解密过程)---在反序列化的过程中自动触发了某些魔术方......
  • 基于java实现的会展中心管理系统
    完整资料进入【数字空间】查看——搜索"writebug"1系统设计1.1设计目标在学习了数据库原理和SQLServer2008数据库管理系统后,采用Java编程语言开发工具,设计并实现会展中心管理系统。本课程的目的是培养学生数据库技术的综合应用能力,通过设计开发一个小型的数据库管理系统,将原理与......
  • JavaScript学习 -- SM3算法基本原理
    SM3算法是一种由国家密码管理局发布的哈希算法,被广泛用于数字签名和消息认证等应用中。在JavaScript中,我们可以使用第三方库来计算数据的SM3哈希值。本篇文章将介绍SM3算法的基本原理和相关技术,并提供一些实例来演示如何在JavaScript中使用SM3算法。SM3算法基本原理与MD5、SHA-1、S......
  • Java设计模式-策略模式
    简介策略模式是指有一定行动内容的相对稳定的策略名称,策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法经验总结抽象策略角色:策略类,通常由一个接口或者抽象类实现具体策略角色:包装了相关的算法和行为环境角色:持有一个策略类的引用,最终给客......
  • javascript数据类型详解
    文章和代码已经归档至【Github仓库:https://github.com/timerring/front-end-tutorial】或者公众号【AIShareLab】回复javascript也可获取。数据类型JavaScript是一种弱类型或者说动态语言。不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。varage=10;//数字型v......
  • 设计模式-备忘录模式在Java中使用示例-象棋悔棋
    场景备忘录模式备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,当前很多软件都提供了撤销(Undo)操作,其中就使用了备忘录模式。备忘录模式结构图 在备忘录模式结构......
  • 设计模式-中介者模式在Java中使用示例-客户信息管理
    场景欲开发客户信息管理窗口界面,界面组件之间存在较为复杂的交互关系:如果删除一个客户,要在客户列表(List)中删掉对应的项,客户选择组合框(ComboBox)中客户名称也将减少一个;如果增加一个客户信息,客户列表中需增加一个客户,且组合框中也将增加一项。中介者模式概述如果在一个系统......
  • odoo _register_hook和_patch_methods组合使用,实现日志功能,效果和java的切面类似
    _register_hook方法是在odoo启动,加载模块时调用,可以在调用期间对某个的模型进行功能增强,比如增加日志下面是一个简单的示例:classLog(models.Model):_name="cn.com.brandmax.log"_description="日志"def_make_read(self):defread(self,fields=N......
  • Java面试题 P13:MySql中,如何定位慢查询
    如何定位慢查询?1、首先介绍一下当时产生问题的场景,具体什么情况慢2、在mysql中开启慢查询日志,设定查询时间超过2秒的都记录到日志中,我们逐步筛查出现慢sql的原因慢查询可能产生的原因:(1)聚合查询(2)多表查询(3)表数据量过大查询(4)深度分页查询 mysql开启慢查询日志配置:(1)打开My......