当前位置:   article > 正文

java.lang.IllegalStateException异常原因和解决

java.lang.illegalstateexception

1、出现该异常场景

  1. Iterator.remove() 迭代删除 引发

2、问题定位分析

1. Iterator.remove() 迭代删除 引发

	重复 remove 导致出现该异常
  • 1
场景示例
	@Test
    public void illegalStateExceptionTest (){
        ArrayList<String> strs = new ArrayList<>();
        strs.add("1,2");
        strs.add("3,4,5");
        strs.add("6,7,8,9,10");
        Iterator<String> itr = strs.iterator();
        while (itr.hasNext()){
            String str = itr.next();
            String[] split = str.split(",");
            for (String s : split) {
                if (s.equals("4") || s.equals("5")){
                    itr.remove(); // 存在循环体,重复remove 导致异常
                    //break;
                }
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
问题分析
	需要使用next方法迭代出集合中的元素 ,然后才能调用remove方法,
	否则集合可能会因为对同一个Iterator remove了多次而抛出java .lang.IllegalStateException异常。
	解决:可在循环体中 remove 后跳出循环 使用 break
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/253216
推荐阅读
相关标签
  

闽ICP备14008679号