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

发布于 2022-09-06 07:46:16 字数 1761 浏览 32 评论 0

我建立了两个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();
                                }
                            }


                        }
                        
                    }
                }
                
            }
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

情深如许 2022-09-13 07:46:16

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

舞袖。长 2022-09-13 07:46:16

麻烦贴一下具体的异常

朕就是辣么酷 2022-09-13 07:46:16

debug一下就好了

可可 2022-09-13 07:46:16

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

凌乱心跳 2022-09-13 07:46:16

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

琉璃繁缕 2022-09-13 07:46:16

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文