当前位置: 首页 > news >正文

不可变集合

定义:就是集合中的内容不可以被修改。

如何获取不可变集合?

List、Set、Map类中提供的静态方法of可用来获取不可变集合。

特点:一旦创建完成只可以进行查询,不可以增删改。

细节:Map集合中的of方法只能添加10个键值对。因为of方法中键和值是分开进行传递的,不能使用可变参数。

当添加的键值对超过10个时,可使用Map中提供的ofEntries方法,在这个方法中,可以把键和值看作一个整体,然后再使用可变参数。

那么这个方法如何使用呢?

①获取到所有的键值对对象(Entry对象);

②使用toArray方法把键值对对象放到数组中去并指明数组中存放的是Entry类型的数据;

toArray方法在底层会比较集合的长度跟数组的长度两者的大小:

如果集合的长度 > 数组的长度 :数据在数组中放不下,此时会根据实际数据的个数,重新创建数组。

如果集合的长度 <= 数组的长度:数据在数组中放的下,此时不会创建新的数组,而是直接用。

下面是代码示例:

public class Test3 {public static void main(String[] args) {//1.创建一个普通的Map集合HashMap<String, String> hm = new HashMap<>();hm.put("张三", "南京");hm.put("李四", "北京");hm.put("王五", "上海");hm.put("赵六", "北京");hm.put("孙七", "深圳");hm.put("周八", "杭州");hm.put("吴九", "宁波");hm.put("郑十", "苏州");hm.put("刘一", "无锡");hm.put("陈二", "嘉兴");hm.put("林三", "天津");/*// 把键值对转变为键值对对象并获取Set<Map.Entry<String, String>> entries = hm.entrySet();// 使用toArray方法把键值对对象放到数组中去并指明数组中存放的是Entry类型的数据Map.Entry[] array = entries.toArray(new Map.Entry[0]);// 创建不可变集合Map map = Map.ofEntries(array);
*///Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));Map<String, String> map = Map.copyOf(hm);}
}

在JDK10以后提供了cpoyOf方法,就是对ofEntries方法创建不可变集合等代码的抽取。

有一点:Map是一个接口,然后其中又有一个内部类接口Entry,就是键值对对象。

http://www.lryc.cn/news/406684.html

相关文章:

  • 景区AR导航营销系统:技术解决方案与实施效益分析
  • MATLAB的基础知识
  • Redis-高级实战案例
  • d3d12.dll 文件缺失如何解决?五种修复丢失问题的方法
  • Linux下如何设置系统定时任务
  • 【React】JSX 实现列表渲染
  • 写一个简单的兼容GET/POST请求的登录接口
  • 【好玩的经典游戏】Docker环境下部署赛车小游戏
  • 物理机 gogs+jenkins+sonarqube 实现CI/CD
  • 前端表格解析方法
  • Leetcode 3227. Vowels Game in a String
  • 树莓派4B从装系统raspbian到vscode远程编程(python)
  • vue上传Excel文件并直接点击文件列表进行预览
  • OpenCV 像素操作—证件照换底色详细原理 C++纯手写实现
  • tinygrad框架简介;MLX框架简介
  • 服务器重启了之后就卡在某个页面了,花屏,如何解决??
  • Hospital 14.6.0全开源医院管理预约系统源码
  • C/C++樱花树代码
  • sklearn基础学习
  • SpringBoot 自动配置原理
  • Redisson中RQueue的使用场景附一个异步的例子
  • SpringMVC 控制层框架-下
  • (四)js前端开发中设计模式之工厂方法模式
  • 新版GPT-4omini上线!快!真TM快!
  • 【Unity】RPG2D龙城纷争(十七)敌方常规AI(Normal)的实现
  • Tracy 小笔记:微信小程序 mpx 雷达图的实现
  • Unity UGUI 之 Input Field
  • SpringBoot接入mongodb例子,并有增删改查功能
  • 类和对象(三)
  • Android SurfaceFlinger——GraphicBuffer初始化(二十九)