Java中 创建不可变集合
常规写法
以往我们创建一些不可变集合的时候,通常是这样写的:
// 不可变的Set
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set = Collections.unmodifiableSet(set);
// 不可变的List
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list = Collections.unmodifiableList(list);
Java8的写法
在Java 8的时候,利用Stream API还能简化一下,可以演变成这样:
Set<String> set = Collections.unmodifiableSet(Stream.of("a", "b", "c").collect(toSet()));
List<Integer> list = Collections.unmodifiableList(Stream.of(1, 2, 3).collect(toList()));
Java9的写法
而现在到了Java 9,这一操作变的更为简单,只需要这样:
Set<String> set = Set.of("a", "b", "c");
List<Integer> list = List.of(1, 2, 3);
同时,对于一下更复杂的集合也一样支持,比如Map类型也可以这样写:
Map<String, String> map = Map.of("a", "1", "b", "2", "c", "3");
就是要注意下,Map.of的参数是key和value成对出现的,所以参数数量一定是偶数:
Map.of()
Map.of(k1, v1)
Map.of(k1, v1, k2, v2)
Map.of(k1, v1, k2, v2, k3, v3)
...
与asList的区别
看到这里,可能有的人会问了,之前不是对于集合有asXxx这样的方便方法了么?他们有啥区别吗?
这里就以 List.of 和 Arrays.asList 为例,给大家列一下它们的异同:
Java 9中推出 List.of 创建的是不可变集合,而 Arrays.asList 是可变集合
List.of 和 Arrays.asList 都不允许add和remove元素,但 Arrays.asList 可以调用set更改值,而 List.of 不可以,会报 java.lang.UnsupportedOperationException 异常
List.of 中不允许有null值, Arrays.asList 中可以有null值
相关文章:
Java中 创建不可变集合
常规写法 以往我们创建一些不可变集合的时候,通常是这样写的: // 不可变的Set Set<String> set new HashSet<>(); set.add("a"); set.add("b"); set.add("c"); set Collections.unmodifiableSet(set); //…...
options.css 内容优化2 --chatPGT
问: options.css 内容优化,功能列表的li,设置成点击按钮的样式,需要有鼠标经过高亮,选中时按钮背景颜色和未选中时的背景色需要有肉眼可见的色差 gpt: 为了使左侧功能列表的每个 <li> 元素看起来像按钮,并且在鼠标经过时…...

MS4344:24bit、192kHz 双通道数模转换电路
MS4344 是一款立体声数模转换芯片,内含插值滤波器、 multi-bit 数模转换器、输出模拟滤波器。 MS4344 支持大部分 的音频数据格式。 MS4344 基于一个带线性模拟低通滤波器的 四阶 multi-bit Δ-Σ 调制器,而且本芯片可以通过检测信号频率 和主时钟频…...

Talk | ACL‘23 杰出论文,MultiIntruct:通过多模态指令集微调提升VLM的零样本学习
本期为TechBeat人工智能社区第536期线上Talk! 北京时间10月11日(周三)20:00,弗吉尼亚理工大学博士生—徐智阳、沈莹的Talk已准时在TechBeat人工智能社区开播! 他们与大家分享的主题是: “通过多模态指令集微调提升VLM的零样本学习”ÿ…...

PLC编程速成(二)
目录 操作符 什么是操作符? 变量表(数据类型) 常用的类型: 变量表图 设置复位指令 如何重复双线圈与解决复双线圈问题? 解决复双线圈 编辑 重复双线圈 置复位指令(有置位就存在复位)…...

【萌新向】Sql Server保姆级安装教程-图文详解手把手教你安sql
首先打开百度,搜索sql server,找到图示词条,点击进去。 一般版本是需要付费的,正常开发可以使用免费版本【Express】,点击下载 下载完成后打开下载的文件。三个选项,我们选自定义方式。 选择语言和位置…...

LLVM(5)ORC实例分析
ORC实例总结 总结 因为API茫茫多,逻辑上的一些概念需要搞清,编码时会容易很多。JIT的运行实体使用LLVMOrcCreateLLJIT可以创建出来,逻辑上的JIT实例。JIT实例需要加入运行库(依赖库)和用户定义的context(…...
jvm内存使用测试
记一次摸不着头脑的FullGC问题 (Thumbnails压缩图片占用巨大内存)_thumbnails内存溢出-CSDN博客 谈谈Runtime类中的freeMemory,totalMemory,maxMemory几个方法-CSDN博客 JVM实战:CMS和G1的物理内存归还机制_shrinkheapinsteps-CSDN博客 J…...

Web1.0——Web2.0时代——Web3.0
Web1.0 Web1.0是互联网的早期阶段,也被称为个人电脑时代的互联网。在这个阶段,用户主要通过web浏览器从门户网站单向获取内容,进行浏览和搜索等操作。在这个时代,技术创新主导模式、基于点击流量的盈利共通点、门户合流、明晰的主…...

【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--笔记
0. 内容 1. VIO回顾 整个视觉前端pipeline回顾: 两帧图像,可提取特征点,特征匹配(描述子暴力匹配或者光流)已知特征点匹配关系,利用几何约束计算relative pose([R|t]),translation只有方向&…...
大开眼界:Netbios 上古时代如何用一个参数实现一个世界 负面典型
今天的程序员普遍遵循这样的接口设计原则:通过不同的接口名和参数列表准确表达不同的功能。 这似乎是理所当然的,然而上古时代却并非如此,比如Netbios协议整个协议的接口只有一个函数、一个参数! 当初是基于什么原则这样设计不晓得…...
el-table制作表格,改变表格的滚动条样式
// 改变滚动条相关样式 *::-webkit-scrollbar {width:10px; height:0px; background-color:transparent;} /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ *::-webkit-scrollbar-track {background-color: rgba(0,0,0,0.3); } /*定义滚动条轨道 内阴影圆角*/ *::-web…...
Cmd报错:No module named ‘pip’
目录 1、问题描述2、问题原因3、问题解决 1、问题描述 今天在cmd命令行安装Twisted的扩展包whl文件时报错: ...... ModuleNotFoundError: No module named pip2、问题原因 升级pip时命令使用错误 3、问题解决 1) 重装pip python -m ensurepip2&#x…...
python输出奇数:如何使用Python输出奇数?
Python输出奇数的方法有很多种,下面给出一种使用for循环的实现方式:上述代码的输出结果为: Python输出奇数的方法有很多种,下面给出一种使用for循环的实现方式: # 定义一个变量n,表示要输出的奇数的最大值…...

2023 NewStarCTF --- wp
文章目录 前言Week1MiscCyberChefs Secret机密图片流量!鲨鱼!压缩包们空白格隐秘的眼睛 Web泄露的秘密Begin of UploadErrorFlaskBegin of HTTPBegin of PHPR!C!E!EasyLogin CryptobrainfuckCaesars SecertfenceVigenrebabyrsaSmall dbabyxorbabyencodin…...

一键切换IP地址:电脑IP更改的简便方法
今天我要和大家分享一个电脑IP更改的简便方法——一键切换IP地址。如果您想要更改电脑的IP地址,无需繁琐的设置和复杂的步骤,只需使用以下简单的方法,即可轻松实现IP地址的切换。让我们开始吧! 1、使用批处理脚本 批处理脚本是一…...
计算机相关内容的网站主题说明书
1. 网站名称: 中职计算机学堂 2. 网站目标: 主要目标:为中职学生提供计算机基础教程、编程入门、IT技能培训。次要目标:鼓励学生发表自己的作品,交流技术问题,构建IT爱好者社区。 3. 目标受众࿱…...

zabbix监控项
一、监控项(items) 1、获取监控数据的方式: ① zabbix-agent:代理程序是在被监控主机上运行的软件,负责收集和报告有关主机性能和状态的数据,监控系统通过与代理程序通信来获取数据。 ② SNMP࿱…...
Java基础面试-重载和重写的区别
重载:发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可 以不同,发生在编译时。 重写:发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类&…...

记一次生产大对象及GC时长优化经验
最近在做一次系统整体优化,发现系统存在GC时长过长及JVM内存溢出的问题,记录一下优化的过程 面试的时候我们都被问过如何处理生产问题,尤其是线上oom或者GC调优的问题更是必问,所以到底应该如何发现解决这些问题呢,用真实的场景实操ÿ…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...