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取不存在键值对时的异常情况相关推荐

  1. 随机获得map/json中的一组键值对

    java如果在一个给定的map中取出随机的一个键值对呢? 首先测试一下, 先写一个map做测试用, 当然是我们最喜欢的4am啦: import java.util.*;class Untitled { ...

  2. map,存储多个键值对的数据集合

    在ES5中,我们使用的是对象的方式来存储键值对,键是属性名,值是属性值,这种方法有以下问题 1)键名只能是字符串 2)获取数据的数量不方便 3)键名容易跟原型上的名称冲突 ES6中新增了map集合专门 ...

  3. java 遍历map获取下标_java 遍历Map并且获取其中的键值

    import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  4. 在url中取ip或者键值对、手机号脱敏、电话号脱敏、身份证脱敏、银行卡号脱敏、身份证校验

    赶快收藏起来,以备不时之需~ 取IP let url = 'http://123.234.123.111:80/www/ASRfiles/ts/Server/2021/3/25/1015.mp4'// ...

  5. Hive 数据聚合成键值对时,根据值大小进行排序

    背景 最近对用户的行为数据进行统计分析时,需要列出不同用户的具体详情,方便进行观察,在hive中虽然有排序函数,但是处理键值对数据时,不能根据值进行排序,需要巧妙借助中间过程来处理,总结出来与大家进行 ...

  6. go map的定义和使用 键值对存储

    定义map    var m map[string]int //定义map 初始化map    m = make(map[string]int) //初始化map 修改map中ok 的值  m[&qu ...

  7. C++ map中使用pair构造键值对小记

    源码 #include <iostream> #include <memory> #include <map> #include <string> #i ...

  8. qt怎么输出一个map里的所有键值_《长安十二时辰》里的MapReduce原理

    一 什么是MapReduce MapReduce是一种编程模型,也是一个处理和生成超大数据集的算法模型的相关实现.最早是由谷歌2004年公布的 MapReduce论文,论文描述了大数据的分布式计算方式 ...

  9. 移除map中的键值对

    背景 实现 A little bit of progress every dayCome on 背景 项目中需要移除map集合中对应的键值对,用以控制数据的变化. 实现 这里我写了一个测试方法,通过打 ...

最新文章

  1. SpringBoot 2.6.0发布:禁止循环依赖,还有哪些实用的更新?
  2. 20220312 矩阵求逆引理
  3. java调用存储过程分页
  4. Php与mssql数据交互
  5. [one day one question] safari缓存太厉害
  6. (译)Windows Azure的7月更新:SQL数据库,流量管理,自动缩放,虚拟机
  7. c#+mysql图片存数据库_C#图片存入数据库及其读出显示
  8. c语言设计匀速直线运动,C语言课程设计指导书2015版(试用版)201506.doc
  9. 1006 换个格式输出整数(C语言)
  10. LOJ P3960 列队 树状数组 vector
  11. Android获取用户通讯录上传,Android获取通讯录并上传(包含通讯录加密)(示例代码)...
  12. (转)牛牛牌型判定(五小牛 五花牛 炸弹 银牛 牛牛 有牛没牛)
  13. Mac连局域网打印机
  14. 推荐一款云服务器免费试用,可以延期再使用
  15. Java面试题十篇基本问题,学完这些我就不信拿不到offer
  16. Facebook分享使用
  17. 稳了!工业质检蝉联第一
  18. 仿360一键清理实现(一)
  19. 一起来看Ract(轮播)
  20. LiveGBS流媒体平台GB/T28181功能-安防监控录像服务端集中存储云上录像存储云端录像回看下载

热门文章

  1. 【拯救赵明】全面防护网络攻击服务器负载及安全解决方案
  2. springboot环境配置,yml格式,不同环境切换
  3. 从零开始搭建Cydia软件源+制作deb安装包
  4. 你需要的jmeter常用Beanshell脚本,还不看一眼?
  5. 笔记本整机性能测试软件,整机性能测试
  6. (附源码)ssm基于java的线上阅读平台的设计与实现 毕业设计291023
  7. CefSharp 常用设置
  8. 最全的 SQL 优化方案
  9. SQL 招聘网站岗位数据分析
  10. 动力电池管理系统(BMS)策略与开发方法