为了账号安全,请及时绑定邮箱和手机立即绑定

java map使用迭代器遍历时执行删除元素报空指针异常

java map使用迭代器遍历时执行删除元素报空指针异常

吃鸡游戏 2019-02-23 09:15:20
我建立了两个Map,其流程是遍历两个map,将map1中value值与map2中相同,但是K值不同的数据查找出来。然后把这条数据从Map2中删除。我使用迭代器在执行移除的时候是报空指针(java.lang.NullPointerException)的错。请教一下代码问题错误在哪?代码如下: for (Map.Entry<String, DBdata> entry1 : map1.entrySet()) { //初始化数据 String code1 = entry1.getKey(); DBdata data1 = entry1.getValue(); Iterator<Map.Entry<String, DBdata>> iter = map2.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<String, DBdata> entry2 = iter.next(); String code2 = entry2.getKey(); DBdata data2 = entry2.getValue(); if (code1.equals(code2)) { continue; } if (data1.get_URL() != null) { if (data1.get_URL().equals(data2.get_URL())) { if (data1.get_USER_CODE() != null) { if (data1.getBUSINESS_CODE().equals(data2.getBUSINESS_CODE())) { if (data1.getSYSTEM_CODE().equals(data2.getSYSTEM_CODE())) { LOG.info("移除该数据 "); iter.remove(); } } } } } } }
查看完整描述

6 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

感觉报空指针异常的不是这段代码

查看完整回答
反对 回复 2019-03-01
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

麻烦贴一下具体的异常

查看完整回答
反对 回复 2019-03-01
?
BIG阳

TA贡献1859条经验 获得超6个赞

debug一下就好了

查看完整回答
反对 回复 2019-03-01
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

Map.Entry<String, DBdata> it = iter.next();
这一行放循环里面会不会好一点
为什么对iter做那么多next()操作,你确定不是操作了n/2条数据?

查看完整回答
反对 回复 2019-03-01
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

谢邀,能确定是iter.remove();这行代码抛出的异常么,个人感觉应该不会是这一行,把异常堆栈信息贴出来吧,如果容器数据量不大,debug一下应该就能查出来。

查看完整回答
反对 回复 2019-03-01
?
慕斯王

TA贡献1864条经验 获得超2个赞

Well, this is my first visit to your blog! Your blog provided us valuable information .You have done a marvelous job

查看完整回答
反对 回复 2019-03-01
  • 6 回答
  • 0 关注
  • 1816 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号