不可变集合

什么是不可变集合?

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

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

为什么创建不可变集合?

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

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

如何创建不可变集合?

在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集合对象
public static void main(String[] args) {// 创建List不可变集合List<Integer> nums1 = List.of(10, 40, 80, 100);System.out.println(nums1); // [10, 40, 80, 100]// 创建Set不可变集合, Set不可变集合强制要求不能输入相同的元素Set<Double> nums2 = Set.of(10.7, 20.6, 40.7, 90.0);System.out.println(nums2);// 创建Map不可变集合Map<String, Integer> info = Map.of("Java", 20, "Vue", 30, "React", 40);System.out.println(info); // [10, 40, 80, 100]
}

注意: 不可变集合不能添加,不能删除,不能修改。

小结:

不可变集合的特点?

定义完成后不可以修改,或者添加、删除

如何创建不可变集合?

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

Java中的不可变集合介绍相关推荐

  1. Java 中15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等...

    http://blog.51cto.com/13919357/2339446 Java 中15种锁的介绍 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容 ...

  2. Java 中15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等

    Java 中15种锁的介绍 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 公平锁 / 非公平锁 可重入锁 / 不可重入锁 独享锁 / 共享锁 互 ...

  3. setyear java_如何在Java中创建不可变类

    如果对象在构造后无法更改,则该对象是不可变的.不可变对象不会以任何方式暴露其他对象来修改其状态; 对象的字段仅在构造函数内初始化一次,并且永远不会再次更改. 在本文中,我们将定义在Java中创建不可变 ...

  4. java创建一个不可变对象_如何在Java中创建不可变类?

    java创建一个不可变对象 Today we will learn about the immutable class in Java. What are immutable classes? The ...

  5. Java中的模块(Module)入门介绍

    Java中的模块(Module)入门介绍 在Java 9版本中Java 语言引入了一个非常重要的概念:模块(module).module引入了Java代码分组的另一个级别.每个module都包含许多子 ...

  6. NO.7 Monitor(管程)是什么意思?Java中Monitor(管程)的介绍

    目录 一.Monitor的概念 二.Monitor 基本元素 三.Java 语言对 monitor 的支持 临界区的圈定 monitor object synchronized 关键字 四.管程:并发 ...

  7. Java中的数据结构之集合

    文章目录 前言 一.集合的基本框架 二.Collection 1.常用方法 2.Iterator 3.foreach循环 4.List 5.Queue 6.Set 三.Map 1.Map实现类 2.M ...

  8. 关于Java中final关键字的详细介绍

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  9. 【Java】如何理解Java中的双列集合Map?

    1 Map<K,V>接口 1.1 特点 双列集合一个元素包含俩值 Key不可以重复,Value可以重复 Key和Value一一对应 Key和Value可以时任意类型 1.2 常用方法 pu ...

最新文章

  1. tensorflow问题
  2. VTK:Filtering之ExtractVisibleCells
  3. HDU - 1757 A Simple Math Problem(矩阵快速幂,水题)
  4. C#二维数组的定义和初始化
  5. PyFoam来实时输出残差
  6. mapreduce原理_Hbase Bulkload 原理面试必备
  7. CCF 2017-3-2 学生排队
  8. linux telnet 127.0.0.1 不通,Linux 出现telnet: 127.0.0.1: Connection refused错误解决办法
  9. SQL 对大小写不敏感!
  10. 28. git 常用命令
  11. python数字时钟日期_Python数值日期时间笔记
  12. 【MySQL学习笔记】MySQL库与表
  13. 信息论基础 thomas 2nd ed
  14. bat脚本实现微信多开
  15. 灰度思维,黑白决策(上)
  16. python免费全套教程400集视频-如何入门 Python 爬虫?400集免费教程视频带你从0-1全面掌握...
  17. python docx 提取图片_python 解析docx文档的方法,以及提取插入的文本对象和图片...
  18. Android高级工程师面试实战,赶快收藏备战金九银十!
  19. 毕业季——在校生讲述
  20. Spring控制事务回滚

热门文章

  1. 神经网络 深度神经网络,图神经网络和神经网络
  2. python特征选择relieff图像特征优选_基于Relief特征选择算法的研究与应用
  3. 梅尔加尼服务器状态,梅尔加尼服务器第二界闪光平原暴力竞走大赛
  4. python校正人脸_Python 进行人脸校正
  5. 解决Vue运行报js内存溢出问题
  6. Python使用Treeview制作表格(二)
  7. Android手机通过USB数据线共享Linux电脑网络
  8. (3)聚类算法之DBSCAN算法
  9. 国外不错的网站(类似知乎)
  10. grafana graphite statsd搭建安装部署 实时监控_亲测成功