从Map、JSONObject取不存在键值对时的异常情况
1.在Map中取不存在的键值对时不会报异常,只会返回null。
@Testpublic void testMap() {Map<String, Object> map = new HashMap<String, Object>();map.put("d", 10);Object b = map.get("c");System.out.println(b);}
//打印结果是:null。
结论:从map中取出不存在的键值对时不会报异常,会返回null。
2.在JSONObject中取不存在的键值对时分两种情况:
利用jSONObject.get(Object key)方法及get(String key)取不存在的键值对时不会报异常,会返回null;但是利用jSONObject.getxxx(String key)方法取时会报空指针异常:
@Testpublic void testJSONObject() {Map<String, Object> map = new HashMap<String, Object>();map.put("d", 10);JSONObject jSONObject = JSONObject.fromObject(map);int xx = jSONObject.getInt("d");System.out.println(xx);// 从jSONObject中用get(Object key)方法取出不存在的键值对时不会报异常,会返回nullObject y = jSONObject.get("dd");System.out.println(y);// 从jSONObject中用getxxx(String key)方法取出不存在的键值对时报异常String y2 = jSONObject.getString("dd");System.out.println(y2);}
对null处理时会报空指针异常:
@Testpublic void testNull() {Object o = null;System.out.println(o);String s = (String) o;System.out.println(s);// System.out.println(s.getClass());User u = (User) o;System.out.println(u);// System.out.println(u.getClass());}
//打印结果:
//null
//null
//null
分析可知:不管null是何种类型,Object null或者String null或者其他类型的null,调用getClass()方法时都会报空指针异常。
如果是Object null,则可以转为其他类型的null,因为其他类型都是Object的子类。但是其他类型的null不能随便转类型,除非是有父子关系的类型。例如,如果String类型的想转为User类型的,就会有编译错误,说Cannot cast from String to User。
从Map、JSONObject取不存在键值对时的异常情况相关推荐
- 随机获得map/json中的一组键值对
java如果在一个给定的map中取出随机的一个键值对呢? 首先测试一下, 先写一个map做测试用, 当然是我们最喜欢的4am啦: import java.util.*;class Untitled { ...
- map,存储多个键值对的数据集合
在ES5中,我们使用的是对象的方式来存储键值对,键是属性名,值是属性值,这种方法有以下问题 1)键名只能是字符串 2)获取数据的数量不方便 3)键名容易跟原型上的名称冲突 ES6中新增了map集合专门 ...
- java 遍历map获取下标_java 遍历Map并且获取其中的键值
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...
- 在url中取ip或者键值对、手机号脱敏、电话号脱敏、身份证脱敏、银行卡号脱敏、身份证校验
赶快收藏起来,以备不时之需~ 取IP let url = 'http://123.234.123.111:80/www/ASRfiles/ts/Server/2021/3/25/1015.mp4'// ...
- Hive 数据聚合成键值对时,根据值大小进行排序
背景 最近对用户的行为数据进行统计分析时,需要列出不同用户的具体详情,方便进行观察,在hive中虽然有排序函数,但是处理键值对数据时,不能根据值进行排序,需要巧妙借助中间过程来处理,总结出来与大家进行 ...
- go map的定义和使用 键值对存储
定义map var m map[string]int //定义map 初始化map m = make(map[string]int) //初始化map 修改map中ok 的值 m[&qu ...
- C++ map中使用pair构造键值对小记
源码 #include <iostream> #include <memory> #include <map> #include <string> #i ...
- qt怎么输出一个map里的所有键值_《长安十二时辰》里的MapReduce原理
一 什么是MapReduce MapReduce是一种编程模型,也是一个处理和生成超大数据集的算法模型的相关实现.最早是由谷歌2004年公布的 MapReduce论文,论文描述了大数据的分布式计算方式 ...
- 移除map中的键值对
背景 实现 A little bit of progress every dayCome on 背景 项目中需要移除map集合中对应的键值对,用以控制数据的变化. 实现 这里我写了一个测试方法,通过打 ...
最新文章
- SpringBoot 2.6.0发布:禁止循环依赖,还有哪些实用的更新?
- 20220312 矩阵求逆引理
- java调用存储过程分页
- Php与mssql数据交互
- [one day one question] safari缓存太厉害
- (译)Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机
- c#+mysql图片存数据库_C#图片存入数据库及其读出显示
- c语言设计匀速直线运动,C语言课程设计指导书2015版(试用版)201506.doc
- 1006	换个格式输出整数(C语言)
- LOJ P3960 列队 树状数组 vector
- Android获取用户通讯录上传,Android获取通讯录并上传(包含通讯录加密)(示例代码)...
- (转)牛牛牌型判定(五小牛 五花牛 炸弹 银牛 牛牛 有牛没牛)
- Mac连局域网打印机
- 推荐一款云服务器免费试用,可以延期再使用
- Java面试题十篇基本问题,学完这些我就不信拿不到offer
- Facebook分享使用
- 稳了!工业质检蝉联第一
- 仿360一键清理实现(一)
- 一起来看Ract(轮播)
- LiveGBS流媒体平台GB/T28181功能-安防监控录像服务端集中存储云上录像存储云端录像回看下载