1、出現(xiàn)該異常場景
- Iterator.remove() 迭代刪除 引發(fā)
2、問題定位分析
1. Iterator.remove() 迭代刪除 引發(fā)
重復(fù) remove 導(dǎo)致出現(xiàn)該異常
場景示例
@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(); // 存在循環(huán)體,重復(fù)remove 導(dǎo)致異常
//break;
}
}
}
}
問題分析
需要使用next方法迭代出集合中的元素 ,然后才能調(diào)用remove方法,
否則集合可能會因為對同一個Iterator remove了多次而拋出java .lang.IllegalStateException異常。
解決:可在循環(huán)體中 remove 后跳出循環(huán) 使用 break
文章來源地址http://www.zghlxwxcb.cn/news/detail-569007.html
文章來源:http://www.zghlxwxcb.cn/news/detail-569007.html
到了這里,關(guān)于java.lang.IllegalStateException異常原因和解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!