Java进阶之旅第五天
Java进阶之旅第五天
不可变集合
应用场景
- 1.如果某个数据不能被修改,把它拷贝到不可变集合中是个很好的实践
- 2.当集合对象被不可信的库调用时,不可变形式是安全的
- 3.不可变集合不能修改,只能进行查询
获取方式
- 在List,Set,Map接口中,都存在静态的of方法,可以获取一个不可变的集合
- 方法:
List.of(),Set.of(),Map.of() - 举例代码:
List<String> list = List.of("1","2");
细节
- 1.当我们要获取一个不可变的Set集合时,里面的参数一定要保证唯一性.(集合的元素具有唯一性)
- 2.Map集合中键也不能重复
- 3.
Map.of()方法最多只能传递10对键值对,它的底层没有可变参数的方法(原因: 一个方法中不能存在多个可变参数) - 4.当我们想要传递多个键值对进入不可变Map集合中时,我们可以使用
Map.ofEntries(Entry<? extends K, ? extends V>... entries),它的底层就是将一个键值对看成整体,然后改成可变参数 - 5.由于
Map.ofEntries()方法使用不方便,所以一般常用Map.copyOf()方法的参数是一个Map集合,返回值就是不可变集合
代码演示
//不可变集合System.out.println("---list.of---");List<String> list = List.of("1","2","3");for (String s : list) {System.out.println(s);}System.out.println("---set.of---");Set<String> set = Set.of("1","2","3");for (String s : set) {System.out.println(s);}System.out.println("---Map.of(键值对有限)---");Map<String, String> map = Map.of("小明","13","小红","15");Set<Map.Entry<String, String>> entries = map.entrySet();for (Map.Entry<String, String> entry : entries) {System.out.println(entry.getKey()+" = "+entry.getValue());}System.out.println("---Map.of(键值对个数会变化)---");HashMap<String, String> hm = new HashMap<>();hm.put("小明","13");hm.put("小红","15");hm.put("小黑","15");//最简单的方法Map.copyOf()System.out.println("---简单---");Map<String, String> map1 = Map.copyOf(hm);Set<Map.Entry<String, String>> entries1 = map1.entrySet();for (Map.Entry<String, String> entry : entries1) {System.out.println(entry.getKey()+" = "+entry.getValue());}//复杂一点的(copyOf()封装的内容(不理解可以尝试看看别的文章System.out.println("---复杂---");Map<String, String> entries2 = Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));Set<Map.Entry<String, String>> entries3 = entries2.entrySet();for (Map.Entry<String, String> entry : entries3) {System.out.println(entry.getKey()+" = "+entry.getValue());}
结果
---list.of---
1
2
3
---set.of---
1
2
3
---Map.of(键值对有限)---
小明 = 13
小红 = 15
---Map.of(键值对个数会变化)---
---简单---
小红 = 15
小黑 = 15
小明 = 13
---复杂---
小红 = 15
小黑 = 15
小明 = 13
相关文章:
Java进阶之旅第五天
Java进阶之旅第五天 不可变集合 应用场景 1.如果某个数据不能被修改,把它拷贝到不可变集合中是个很好的实践2.当集合对象被不可信的库调用时,不可变形式是安全的3.不可变集合不能修改,只能进行查询 获取方式 在List,Set,Map接口中,都存在静态的of方法,可以获取一个不可变的…...
拓展边界:前端世界的跨域挑战
目录 什么是跨域 概念 同源策略及限制内容 常见跨域场景 如何解决跨域 CORS Nginx代理跨域 Node中间件代理跨域 WebSocket postMessage JSONP 其他 什么是跨域 概念 在此之前,我们了解一下一个域名地址的组成: 跨域指的是在网络安全中&…...
旅游项目day03
1. 前端整合后端发短信接口 2. 注册功能 后端提供注册接口,接受前端传入的参数,创建新的用户对象,保存到数据库。 接口设计: 实现步骤: 手机号码唯一性校验(后端一定要再次校验手机号唯一性)…...
单片机学习记录(一)
简答题 第1章 1.微处理器、微计算机、CPU、单片机、嵌入式处理器他们之间有何区别? 答:微处理器、CPU都是中央处理器的不同称谓,微处理器芯片本身不是计算机; 单片机、微计算机都是一个完整的计算机系统,单片机是集…...
MacBookPro怎么数据恢复? mac电脑数据恢复?
使用电脑的用户都知道,被删除的文件一般都会经过回收站,想要恢复它直接点击“还原”就可以恢复到原始位置。mac电脑同理也是这样,但是“回收站”在mac电脑显示为“废纸篓”。 如果电脑回收站,或者是废纸篓里面的数据被清空了&…...
Python多线程—threading模块
参考:《Python核心编程》 threading 模块的Thread 类是主要的执行对象,而且,使用Thread类可以有很多方法来创建线程,这里介绍以下两种方法: 创建 Thread 实例,传给它一个函数。派生 Thread 的子类…...
mysql limit
语法 SELECT * FROM TABLE_NAME LIMIT 起始位置,偏移量注: 起始位置从0开始 示例 查询的第1条数据到第100条数据 limit 0,100查询的第101条数据到第200条数据 limit 100,100注意不要用 limit 101,100示例2 limit 语句应放在order by语句后面执行 …...
解决国内Linux服务器无法使用Github的方法
解决思路:修改Host https://www.ipaddress.com/ 利用上面的网站查询github.com和raw.githubusercontent.com的DNS解析的IP地址 最后,修改服务器的/etc/hosts 添加如下两行: 140.82.112.3 github.com 185.199.108.133 raw.githubuserconte…...
动态规划基础(二)最长公共子序列 LCS
讲解求两个串中最长的公共的子序列长度或输出子序列等 poj1458 题目大意 给定两个字符串,要求输出两个字符串中最长公共子序列长度 思路 我们定义 a [ i ] [ j ] a[i][j] a[i][j]为,当字串 s t r 1 str1 str1到 i i i位置,字串 s t r 2 s…...
React配置src根目录@
文章目录 1.打开webpack配置文件2.配置webpack 1.打开webpack配置文件 yarn eject or npm run eject 如果报错了记得提前 git commit一下 2.配置webpack 找到 webpack.config.js 文件在 webpack.config.js 文件中找到 alias 配置在alias里添加: path.resolve(src) , 或者 : pa…...
SQL Povit函数使用及实例
PIVOT函数常用于数据的行转列,同时也可以用此函数实现类似于Excel中的数据透视表的效果。 PIVOT函数 PIVOT 函数的基本语法如下: -- PIVOT 语法 SELECT <非透视的列>,[第一个透视的列] AS <列名称>,[第二个透视的列] AS <列名称>,.…...
Lite AD的安装
1、Lite AD的安装及配置 Lite AD流程: (1)创建一个新的Windows 10,安装tools,再安装ITA组件(安装Lite AD会自动安装VAG/VLB) (2)创建一个新的Windows 10,安…...
限流算法之流量控制的平滑之道:滑动时间窗算法
文章目录 引言简介优点缺点样例样例图样例代码 应用场景结论 引言 在互联网应用中,流量控制是一个重要的组件,用于防止系统过载和保护核心资源。常见的限流算法包括固定窗口算法和滑动时间窗算法。本文将重点介绍滑动时间窗算法,并分析其优缺…...
C语言数据结构——顺序表
(图片由AI生成) 0.前言 在程序设计的世界里,数据结构是非常重要的基础概念。本文将专注于C语言中的一种基本数据结构——顺序表。我们将从数据结构的基本概念讲起,逐步深入到顺序表的内部结构、分类,最后通过一个实…...
网络安全:守护数字世界的盾牌
在当今数字化的时代,网络已经渗透到我们生活的方方面面。从社交媒体到在线银行,从在线购物到工作文件传输,网络几乎无处不在。然而,随着网络的普及,网络安全问题也日益凸显。那么,如何确保我们的数字资产安…...
vue3hooks的使用
hook是钩子的意思,看到“钩子”是不是就想到了钩子函数?事实上,hooks 还真是函数的一种写法。 vue3 借鉴 react hooks 开发出了 Composition API ,所以也就意味着 Composition API 也能进行自定义封装 hooks。 vue3 中的 hooks …...
elementUI+el-upload 上传、下载、删除文件以及文件展示列表自定义为表格展示
Upload 上传组件的使用 官方文档链接使用el-upload组件上传文件 具体参数说明,如何实现上传、下载、删除等功能获取文件列表进行file-list格式匹配代码 文件展示列表自定义为表格展示 使用的具体参数说明文件大小展示问题(KB/MB)文件下载代码…...
供应链安全项目in-toto开源框架详解
引言:in-toto 是一个开源框架,能够以密码学的方式验证构件生产路径上的每个组件和步骤。它可与主流的构建工具、部署工具进行集成。in-toto已经被CNCF技术监督委员会 (Technical Oversight Committee,TOC)接纳为CNCF孵化项目。 1. 背景 由于…...
自己是如何使用单元测试
前言 自己是如何使用单元测试 进行单元测试能够让我们在编写方法的具体实现代码后,能清晰地看到其是否能实现预期的功能,有助于我们及时修正自己方法中存在的bug,以免在后续使用到某方法时出现意想不到的错误。 一、引入单元测试所使用的依赖…...
第二百七十八回
文章目录 1. 概念介绍2. 使用方法2.1 DropdownMenu2.1 DropdownMenuEntry 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何禁止页面跟随手机自动旋转"相关的内容,本章回中将介绍DropdownMenu组件.闲话休提,让我们一起Talk Flutter吧。 1.…...
王者荣耀进阶指南:如何用这个HTML5模拟器测试不同出装对英雄属性的影响
王者荣耀进阶指南:如何用HTML5模拟器优化英雄出装策略 在MOBA游戏的战术体系中,装备选择往往决定着团战的胜负走向。传统依靠经验积累的配装方式存在试错成本高、数据感知模糊等痛点,而现代HTML5技术构建的模拟器为玩家提供了可视化、即时反馈…...
ChatGLM3-6B-128K在客服系统中的应用:智能回复生成
ChatGLM3-6B-128K在客服系统中的应用:智能回复生成 1. 引言 想象一下,一个繁忙的电商客服中心,每天要处理成千上万的客户咨询。传统的人工客服需要不断重复回答相似的问题,不仅效率低下,还容易因为疲劳而出错。现在&…...
在AutoDL上搞定nuScenes数据集:从解压到mmdetection3d初始化(含避坑指南)
在AutoDL云端高效部署nuScenes数据集:全流程解析与实战避坑指南 nuScenes作为自动驾驶领域最具挑战性的3D感知数据集之一,包含1000个复杂城市场景的多模态数据。但对于刚接触云端GPU服务器的研究者来说,从数据解压到环境配置的每一步都可能遇…...
Mac Mouse Fix终极指南:让你的第三方鼠标在macOS上焕发新生
Mac Mouse Fix终极指南:让你的第三方鼠标在macOS上焕发新生 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 还在为macOS上第三方鼠标功能受限而…...
三大痛点终结!猫抓插件:颠覆式网页资源提取与管理解决方案
三大痛点终结!猫抓插件:颠覆式网页资源提取与管理解决方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾遇到这样的困境:在视频网站看到精彩教程想保存离…...
Downr1n iOS降级与越狱实战指南:从问题诊断到解决方案
Downr1n iOS降级与越狱实战指南:从问题诊断到解决方案 【免费下载链接】downr1n downgrade tethered checkm8 idevices ios 14, 15. 项目地址: https://gitcode.com/gh_mirrors/do/downr1n 一、决策指南:为什么选择Downr1n? 1.1 核心…...
深度学习项目训练环境多场景落地:自动驾驶小车图像识别项目快速启动
深度学习项目训练环境多场景落地:自动驾驶小车图像识别项目快速启动 你是不是也遇到过这样的问题?想跑一个深度学习项目,光是配环境就花了大半天,各种版本冲突、依赖报错,好不容易装好了,一运行又提示缺这…...
PP-DocLayoutV3入门必看:从零部署到JSON结构化输出完整流程
PP-DocLayoutV3入门必看:从零部署到JSON结构化输出完整流程 1. 开篇:认识文档布局分析利器 你是否曾经遇到过这样的困扰:面对扫描的文档图片,想要提取其中的文字和结构信息,却不知道从何下手?或者需要处理…...
模型安全实践:实时手机检测-通用输入图像异常检测(模糊/过曝/裁剪)
模型安全实践:实时手机检测-通用输入图像异常检测(模糊/过曝/裁剪) 1. 项目简介与核心价值 在日常的手机检测应用中,我们经常会遇到各种图像质量问题:图片模糊看不清手机细节、光线过曝导致手机轮廓丢失、或者图片被…...
如何掌握Node-lru-cache的fetchMethod:异步数据获取的终极指南
如何掌握Node-lru-cache的fetchMethod:异步数据获取的终极指南 【免费下载链接】node-lru-cache A fast cache that automatically deletes the least recently used items 项目地址: https://gitcode.com/gh_mirrors/no/node-lru-cache Node-lru-cache是一个…...
