Java中常量Map、常量List
Java 中声明常量我们一般使用 final 关键字来修饰,但是 final 一般只对基本数据类型有效,比如:
public static final String content = "你好";
public static final int num = 1;
如果我们需要一个常量的List或者Map,单纯的使用 final 来修饰,对添加和修改集合的内容就没有作用了。下面的代码并不能达到我们的目的“集合内容常量化”。
public static final Map<String, String> myMap = new HashMap<String, String>() {private static final long serialVersionUID = 1L;{put("1", "11");put("2", "22");}};public static final List<String> myList = new ArrayList<String>() {private static final long serialVersionUID = 1L;{add("a");add("b");}};
具体原因有兴趣的可以去研究Java的内存地址存储,下面直接给出可以解决问题达到目的方法:
public static final Map<String, String> myMap = Collections.unmodifiableMap(new HashMap<String, String>() {private static final long serialVersionUID = 1L;{put("1", "11");put("2", "22");}});public static final List<String> myList = Collections.unmodifiableList(new ArrayList<String>() {private static final long serialVersionUID = 1L;{add("a");add("b");}});
当然List 还有另外一种方法:
public static final List<String> myList1 = new ArrayList<String>(Arrays.asList("Tom", "Jerry", "Mike"));
最后多说一句,上面代码中的 final 虽然并不能对 Map、List 内容的修改起到实际作用,但是和String这种类型一样,可以禁止直接对map赋值。
被final修饰后,当我们的集合初始化以后,再进行直接对象赋值,像 myMap = new HashMap<String, String>();
这样,是无法通过编译的。
所以为达目的,我们既要禁止对象通过“直接赋值”的方式来修改,也要禁止集合内容的变更。
Java中常量Map、常量List相关推荐
- java 定义map_定义map%3ck_v%3e,Java中定义Map恒量,List常量
Java中定义Map常量,List常量 一般的方式的使用静态代码块.比如: public final static Map map = new HashMap(); static { map.put( ...
- java中修饰常量的事_浅谈java中的声明常量为什么要用static修饰
今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰.结果sonar代码检查提示: Rename this field "PERSON_TYPE_USER" ...
- Java中几种常量池的区分
转载自 Java中几种常量池的区分 在java的内存分配中,经常听到很多关于常量池的描述,我开始看的时候也是看的很模糊,网上五花八门的说法简直太多了,最后查阅各种资料,终于算是差不多理清了,很多网上 ...
- java中null是常量吗_C_NULL Julia中的常量
java中null是常量吗 Julia| C_NULL常数 (Julia | C_NULL Constant) C_NULL is a constant of Ptr{Nothing} type in ...
- 简单理解java中什么叫常量
经常看到常量这个词,但是一般并没有太在意,之前一般就认为String定义的就是常量. 实际上,JAVA常量就是在程序中固定不变的值,是不能改变的数据.例如数字1.字符"a".浮点数 ...
- java中把map转换成list
private String key; private String value; //把map转换成list的公共方法 public static List map ...
- Java中使用Map and Fold进行功能性编程
在函数式编程中,Map和Fold是两个非常有用的运算符,它们属于每种函数式语言. 如果Map和Fold运算符是如此强大且必不可少,那么您如何解释说即使Java编程语言缺少这两个运算符,我们也可以使用J ...
- 谈谈java中遍历Map的几种方法
java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...
- java map中套map_Java Map – Java中的Map
java map中套map Java Map is part of collections framework. Java Map object is used to store key-value ...
- Java中Set Map List 的区别
java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...
最新文章
- Mysql4种方式避免重复插入数据!
- 代理详解 静态代理+JDK/CGLIB 动态代理实战
- python数据储存_五种使用python储存数据的方式
- HTML自学教程--一天搞定HTML(总结)
- POPUP_GET_VALUES
- c语言微信昵称大全女生优雅经典的,微信昵称大全女生优雅_有深度有内涵的昵称...
- Objective-C NSSetNSMutableSet以及CountedSet
- Android之基于BaseAdapter和SimpleAdapter的GridView
- TensorFlow多层感知机实现MINIST分类
- ArcGIS中栅格数据的金字塔详解
- 《深入理解OSGi:Equinox原理、应用与最佳实践》笔记_1_运行最简单的bundlehelloworld...
- js系列教程5-数据结构和算法全解
- [转]地图的色彩设计——艺术与技术共存
- day01 python入门之路
- 烽烟通讯2100万限售股将于3月7日疏通流畅上市
- 自带内网穿透的文件同步工具Syncthing介绍
- 易语言大漠多线程模板日志输出
- 云时代数据容灾的正确姿势
- 丢花娟(约瑟夫环问题)
- 如何用Web Scraper抓取巨潮资讯网全站乐视相关pdf文件