怎么确保一个集合不能被修改?

我们很容易想到用final关键字进行修饰,我们都知道final关键字可以修饰类,方法,成员变量,final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的成员变量必须初始化值,如果这个成员变量是基本数据类型,表示这个变量的值是不可改变的,如果说这个成员变量是引用类型,则表示这个引用的地址值是不能改变的,但是这个引用所指向的对象里面的内容还是可以改变的。

那么,我们怎么确保一个集合不能被修改?首先我们要清楚,集合(map,set,list…)都是引用类型,所以我们如果用final修饰的话,集合里面的内容还是可以修改的。

下面提供一个例子:

可以看到:我们用final关键字定义了一个map集合,这时候我们往集合里面传值,第一个键值对1,“1”;我们再修改后,可以把键为1的值改为 "3",说明我们是可以修改map集合的值的。

 

 

 

那我们应该怎么做才能确保集合不被修改呢?
我们可以采用Collections包下的unmodifiableMap方法,通过这个方法返回的map,是不可以修改的。他会报 java.lang.UnsupportedOperationException错。

Collections.unmodifiableMap();

报错:java.lang.UnsupportedOperationException错

 

 

同理:Collections包也提供了对list和set集合的方法。
Collections.unmodifiableList()

例子:使用了Collections.unmodifiableList() 保证集合不可以修改

 

 

Collections.unmodifiableSet() 保证set集合不被修改

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员如何与人打交道

作为程序员,人际关系也是必备的技能之一,本篇文章给大家介绍一下作为程序员处理人际关系需要注意的因素。1、每个人都希望自己被重视当你和他人沟通交流的时候,每个人都希望自己被重视,因为每个人都有自己的想法和观点&#xff0c…

BZOJ_1798__Codevs_2216_[AHOI_2009]_行星序列_(线段树)

描述 BZOJ: http://www.lydsy.com/JudgeOnline/problem.php?id1798 Codevs: http://codevs.cn/problem/2216/ 给出n和行星的质量,进行m次操作: 1.将[l,r]区间内所有行星质量*c. 2.将[l,r]区间内所有行星质量c. 3.询问[l,r]区间内行星质量和. 分析 双标记线段树,多加一个乘法的…

Java中三种Set的实现类的用法和区别

Java为开发者提供了大量的工具类,这给开发人员带来了很大方便,但是选择多了也有困扰,究竟用哪个类;我想选择什么,一是看自己具体需求,二是类本身的性能和用法;Java中提供了HashSet、TreeSet、Li…

程序员的职业选择:打工者、独立开发者、创业者

当你励志成为一名程序员的时候,你是否有对自己的职业生涯进行规划,作为一名开发人员你的理想是什么,希望成为一名什么样的开发者,这些都是不可逃避的问题,本篇文章给大家简单介绍一下程序员的职业选择:打工…

程序员公司选择:创业公司、中等规模公司、大公司

作为一名开发人员,选择不同类型的开发公司你的工作体验可能会完全不同,不同的公司文化也会深刻的影响着你的工作幸福感、存在感、归属感。本篇文章主要给大家分享一下不同类型的公司有什么特点,应该如何进行选择,希望对大家能带来…

Cannot access repo1 (http://repo1.maven.org/maven2) in offline mode and the

我在maven打包的时候出现问题,报错如下: 解决方法: 方法一:如果你出现了如上错误,是因为你的离线模式而导致的依赖的jar包或者需要的插件不能够联网下载 箭头处按钮不能点,点击后表示离线模式 方法二:idea…

作为程序员如何成为专业人士?

1、什么是专业人士?专业人士通常会严肃对待自己的责任和事业,并且愿意作出艰难的选择,然后去做自己认为是正确的事情,当然往往还要自己承担对应的代价。2、专业人士的特点1、恪尽职守、精益求精、不会曲意逢迎。专业人士会让你知道…

linux安装mysql8依赖的环境_CentOS Linux release 8 安装mysql8.

删除用户userdel username删除用户组groupdel groupname查看操作系统信息cat /proc/version操作系统版本信息:Linux version 4.18.0-80.11.2.el8_0.x86_64 (mockbuildkbuilder.bsys.centos.org) (gcc version 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC)) #1 SMP Tue Sep 24 11:32…

jsonp 跨域原理详解

JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即Jav…

程序员远程办公需要面临哪些挑战?

当今,越来越多的软件开发团队允许他们的开发人员在家里远程工作。甚至有些团队完全是虚拟团队,他们没有真正的办公环境。另外如果你是一名自由软件工作者,也是属于远程办公的一种形式的体现。大家可能认为远程工作是那么美好和令人向往。你也…

启动项目出现com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException异常解决方法

启动SpringBoot项目失败mysql连接错误 2020-03-21 20:16:25.193 INFO 8204 --- [ main] com.cnadmart.ApiApplication : Starting ApiApplication on DESKTOP-NFT332E with PID 8204 (D:\gunangpinhui\gphProject\cnadmart-api1.1\target\classes sta…

程序员如何高效的学习?

作为一名程序员,技术的日新月异的发展、行业竞争也是愈演愈烈。你如果想让自己立于不败之地。自学是必不可少的。如何能够高效的自学呢?本篇文章给大家简单梳理一下对应的方法流程,希望能对大家能有一些帮助。1、要有全局观,做到心…

BeanFactory与FactoryBean的区别

spring不允许我们直接操作 BeanFactory bean工厂,所以为我们提供ApplicationContext 这个接口 此接口继承BeanFactory 接口,ApplicationContext包含BeanFactory的所有功能,同时还进行更多的扩展。 BeanFactory是个Factory,也就是IOC容器或对…

MyBatis入门教程(基于Mybatis3.2)

MyBatis和Hibernate一样都是基于ORM的关系型数据库框架 ORM工具的基本思想: 1.从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session。 5.在java对象…

程序员效率:画流程图常用的工具

1、VisioVisio是Windows操作系统下运行的流程图和矢量绘图软件,它属于Office办公软件的一部分。特点:内置大量的模板方便使用,界面简洁操作方便,功能十分全面,因为属于office系列可以很方便和word办公软件结合起来使用…

如何实现数组和 List 之间的转换?

数组转 List:使用 Arrays. asList() 进行转换。 List 转数组:使用 List 自带的 toArray() 方法

程序员职场:拥有一个学位将会在你的职业生涯中更加顺利!

1、作为程序员为什么要拥有学位?很多情况下,作为程序员,学位是进入大公司的敲门砖。现在很多大的科技公司,学位是硬性要求。一般都是本科以上的学历,甚至有的必须是硕士以上学历。如果你的学历达不到,基本上…

程序员常见的职业病有哪些?

程序员是一个久坐的行业,基本上一天有十几个小时需要坐在电脑旁边,随之而来会给我们这些广大的程序员朋友们身体健康带来了很大的隐患。作为一名优秀的程序员,爱护自己的身体也是非常重要的,毕竟身体是革命的本钱嘛。今天主要给大…

java文件流null_JAVA 获取资源文件对象为NULL

今天,写一个添加背景音乐的方法时,在导入当前文件夹下的音乐时中始终出现,以下的异常,Exception in thread "main" java.lang.NullPointerException文件存储位置存放在当前的modlue目录下,格式为wav.源代码private void playBGM(){…

程序员如何快速消除自己的知识短板?

在程序员的职业生涯当中,知识短板将会是你职业生涯发展的瓶颈。只要你能够消除这些短板,这对你的职业发展会大有裨益。本篇文章主要给大家分享一下如何解决自己工作当中的知识短板。希望对大家能有些帮助。1、关于知识短板的概念理解我个人认为所谓的知识…