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.…...
AMD GPU本地AI模型部署终极指南:ollama-for-amd让你的Radeon显卡焕发新生
AMD GPU本地AI模型部署终极指南:ollama-for-amd让你的Radeon显卡焕发新生 【免费下载链接】ollama-for-amd Get up and running with Llama 3, Mistral, Gemma, and other large language models.by adding more amd gpu support. 项目地址: https://gitcode.com/…...
Redis——string类型相关指令
添加键值对SET [key] [value] [EX seconds|PX milliseconds] [NX|XX] //添加一个键值对SETNX [key] [value] //setNX的组合命令,不支持EX/PX选项SETEX [key] [value] //setEX的组合命令,不支持NX/XX选项PSETEX [key] [value] //setPX的组合命令ÿ…...
【C++】类和对象( 类的定义、实例化、 this指针、 C++和C语言实现Stack对比)
小编主页详情<-请点击 小编gitee代码仓库<-请点击 本文主要介绍了类和对象( 类的定义、实例化、 this指针、 C和C语言实现Stack对比),内容全由作者原创(无AI),并带有配图帮助博友们更好的理解&#x…...
Zotero安装后必做的5件事:从浏览器抓取到PDF重命名,新手避坑指南
Zotero安装后必做的5件事:从浏览器抓取到PDF重命名,新手避坑指南 第一次打开Zotero时,面对空荡荡的界面和密密麻麻的菜单选项,很多科研新手都会感到无从下手。作为一款功能强大的开源文献管理工具,Zotero的真正价值往往…...
港科大沈劭劼、谭平团队最新成果:开源280万全景数据集,实现零样本立体匹配
「一举攻克全景3D视觉两大瓶颈」 目录 01 行业痛点:数据匮乏与畸变失效的双重桎梏 1. 数据集稀缺,泛化能力受限 2. 球面畸变破坏单目先验一致性 02 核心突破:超大数据与航向对齐先验双驱动 1. 280万级合成数据集,打破数据壁…...
从音箱分频到电源净化:聊聊RLC低通滤波器那些意想不到的实用场景
从音箱分频到电源净化:聊聊RLC低通滤波器那些意想不到的实用场景 在电子工程的世界里,RLC低通滤波器就像一位低调的幕后英雄。它不像微处理器那样引人注目,也不像显示屏那样直观可见,却在无数电子设备中默默发挥着关键作用。从你每…...
从MSP430到MSPM0L1306:嵌入式工程迁移实战与SDK应用指南
1. 项目概述:从零理解MSPM0L1306的工程迁移最近在帮一个朋友处理一个老项目升级,核心需求是把一个基于TI老款MSP430系列MCU的温控器,迁移到TI新推出的MSPM0L1306这颗芯片上。朋友的原话是:“老芯片快买不到了,新出的MS…...
集团化全员学习企业在线学习平台选型指南|政企专属解决方案
在数字化人才培养浪潮下,集团化全员学习已成为央企、国企、大型上市公司的核心战略,而一款稳定、可管控、高合规的企业在线学习平台,是支撑万人级培训的核心底座。传统分散式培训存在管理混乱、标准不统一、效果不可追溯等痛点,本…...
终极Matlab深度学习工具箱:DeepLearnToolbox完整指南
终极Matlab深度学习工具箱:DeepLearnToolbox完整指南 【免费下载链接】DeepLearnToolbox Matlab/Octave toolbox for deep learning. Includes Deep Belief Nets, Stacked Autoencoders, Convolutional Neural Nets, Convolutional Autoencoders and vanilla Neural…...
论文重复率过低该怎么办?
很多人第一次看到“论文重复率过低”会慌,觉得是不是“太低反而有问题”。先说结论:单纯“重复率低”本身通常不是问题,关键看你低到什么程度,以及你的论文内容是否合理。常见情况分这几种:1. 10%以下:很正…...
