首页 > Python资料 博客日记
Java中操作Map集合时:使用Map.of()添加数据报错 java.lang.UnsupportedOperationException 解决办法以及注意事项
2024-07-14 15:00:04Python资料围观281次
这篇文章介绍了Java中操作Map集合时:使用Map.of()添加数据报错 java.lang.UnsupportedOperationException 解决办法以及注意事项,分享给大家做个参考,收藏Python资料网收获更多编程知识
背景
平时在开发过程中,会造一些假数据,比如给map集合添加一下假数据,每加一条数据,都进行put操作,比较麻烦,有没有快捷的办法呢?当然有,那就是使用Map.of()方法,他是jdk9 版本出现的api方法,可以快速的给map集合添加数据。
demo样例
Map<String,Object> map = Map.of(
"actTotal",12,
"sqlTotal",100,
"responseTime",20,
"oldestxactNum",43,
"oldestxactTime",7);
这样写起来非常的方便简洁
突发情况
今天在工作中碰到一个问题,使用Map.of()方法,一直报错,源代码是这样的:
@Test
public void test(){
Map<String, Object> m3 = Map.of( "TS_UTILIZATION_PERCENT", 77.13,
"TS_TOTAL_SIZE_KB", 2097152,
"EXE_TIME", "2024-06-14 13:54:22",
"TS_PAGE_TOP", 404224,
"TS_PAGESIZE", 4096,
"TS_TYPE", "D",
"DATA_TIME", "2024-06-14 13:54:22",
"TS_USABLE_SIZE_KB", 2096128,
"TS_NAME", "AFA_BEP_I",
"TS_DATATYPE", "L");
m3.put("TS_STATE", "NORMAL");
m3.put("US_TOTAL_SIZE",100);
m3.put("NO_US_TOTAL_SIZE",90);
for (Map.Entry<String, Object> entry : m3.entrySet()) {
System.out.println(entry.getKey() + "," + entry.getValue());
}
}
报错信息如下:
java.lang.UnsupportedOperationException
at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
at java.base/java.util.ImmutableCollections$AbstractImmutableMap.put(ImmutableCollections.java:1072)
at org.dromara.test.patrol.SimpleTest.test(SimpleTest.java:26)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at ......................
解决办法
Map.of()方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常,也就是说Map.of()返回之后的集合,不能在往里面加数据了,所以正确写法应该是这样
@Test
public void test(){
Map<String, Object> m3 = Map.of( "TS_UTILIZATION_PERCENT", 77.13,
"TS_TOTAL_SIZE_KB", 2097152,
"EXE_TIME", "2024-06-14 13:54:22",
"TS_PAGE_TOP", 404224,
"TS_PAGESIZE", 4096,
"TS_TYPE", "D",
"DATA_TIME", "2024-06-14 13:54:22",
"TS_USABLE_SIZE_KB", 2096128,
"TS_NAME", "AFA_BEP_I",
"TS_DATATYPE", "L");
for (Map.Entry<String, Object> entry : m3.entrySet()) {
System.out.println(entry.getKey() + "," + entry.getValue());
}
}
注意事项
- Map.of()方法最多只能往里面添加10组数据,超过10组数据,会编译错误
通过源代码也可以,发现其中端倪
static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5,
K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10) {
return new ImmutableCollections.MapN<>(k1, v1, k2, v2, k3, v3, k4, v4, k5, v5,
k6, v6, k7, v7, k8, v8, k9, v9, k10, v10);
}
- Map.of()方法是一个不可变集合,对返回的集合,不能再添加数据,否则会报异常java.lang.UnsupportedOperationException
知识扩展
JDK9的新特性︰
List接口, Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素
static Listof (E… eLements)
使用前提:
当集合中存储的元素的个数已经确定了,不在改变时使用
注意:
1.of方法只适用于List接口,set接口,Map接口,不适用于接接口的实现类
2.of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
3.Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程