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相关推荐

  1. java 定义map_定义map%3ck_v%3e,Java中定义Map恒量,List常量

    Java中定义Map常量,List常量 一般的方式的使用静态代码块.比如: public final static Map map = new HashMap(); static { map.put( ...

  2. java中修饰常量的事_浅谈java中的声明常量为什么要用static修饰

    今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰.结果sonar代码检查提示: Rename this field "PERSON_TYPE_USER" ...

  3. Java中几种常量池的区分

    转载自  Java中几种常量池的区分 在java的内存分配中,经常听到很多关于常量池的描述,我开始看的时候也是看的很模糊,网上五花八门的说法简直太多了,最后查阅各种资料,终于算是差不多理清了,很多网上 ...

  4. java中null是常量吗_C_NULL Julia中的常量

    java中null是常量吗 Julia| C_NULL常数 (Julia | C_NULL Constant) C_NULL is a constant of Ptr{Nothing} type in ...

  5. 简单理解java中什么叫常量

    经常看到常量这个词,但是一般并没有太在意,之前一般就认为String定义的就是常量. 实际上,JAVA常量就是在程序中固定不变的值,是不能改变的数据.例如数字1.字符"a".浮点数 ...

  6. java中把map转换成list

    private String key;     private String value;          //把map转换成list的公共方法     public static List map ...

  7. Java中使用Map and Fold进行功能性编程

    在函数式编程中,Map和Fold是两个非常有用的运算符,它们属于每种函数式语言. 如果Map和Fold运算符是如此强大且必不可少,那么您如何解释说即使Java编程语言缺少这两个运算符,我们也可以使用J ...

  8. 谈谈java中遍历Map的几种方法

    java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...

  9. 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 ...

  10. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...

最新文章

  1. Mysql4种方式避免重复插入数据!
  2. 代理详解 静态代理+JDK/CGLIB 动态代理实战
  3. python数据储存_五种使用python储存数据的方式
  4. HTML自学教程--一天搞定HTML(总结)
  5. POPUP_GET_VALUES
  6. c语言微信昵称大全女生优雅经典的,微信昵称大全女生优雅_有深度有内涵的昵称...
  7. Objective-C NSSetNSMutableSet以及CountedSet
  8. Android之基于BaseAdapter和SimpleAdapter的GridView
  9. TensorFlow多层感知机实现MINIST分类
  10. ArcGIS中栅格数据的金字塔详解
  11. 《深入理解OSGi:Equinox原理、应用与最佳实践》笔记_1_运行最简单的bundlehelloworld...
  12. js系列教程5-数据结构和算法全解
  13. [转]地图的色彩设计——艺术与技术共存
  14. day01 python入门之路
  15. 烽烟通讯2100万限售股将于3月7日疏通流畅上市
  16. 自带内网穿透的文件同步工具Syncthing介绍
  17. 易语言大漠多线程模板日志输出
  18. 云时代数据容灾的正确姿势
  19. 丢花娟(约瑟夫环问题)
  20. 如何用Web Scraper抓取巨潮资讯网全站乐视相关pdf文件

热门文章

  1. CVPR 2022 | 基于GAN生成 艺术文字logo及布局
  2. Anaconda创建、删除虚拟环境以及一些conda常用指令
  3. OpenCV 提取不规则ROI区域
  4. office --excel技巧
  5. 基于uni-app的小程序开发记录
  6. img-polaroid_宝丽来堆栈到网格简介动画
  7. DR/BDR的选举规则?
  8. 计算机网络1级证书,全国计算机等级WPS OFFICE一级证书
  9. PS调出甜美艺术外景女生照片
  10. 打造免开发智能太阳能灯|支持APP 语音控制低功耗抗干扰