java.lang.IllegalStateException異常原因和解決辦法
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
總結(jié)
到此這篇關(guān)于java.lang.IllegalStateException異常原因和解決辦法的文章就介紹到這了,更多相關(guān)java.lang.IllegalStateException異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 自定義Spring框架與Spring IoC相關(guān)接口分析
Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)2021-10-10Java實戰(zhàn)項目 醫(yī)院預(yù)約掛號系統(tǒng)
本文是一個Java語言編寫的實戰(zhàn)項目,是一個醫(yī)院預(yù)約掛號系統(tǒng),主要用到了jdbc+jsp+mysql+ajax等技術(shù),技術(shù)含量比較高,感興趣的童鞋跟著小編往下看吧2021-09-09詳細(xì)介紹Java關(guān)鍵字throw?throws?Throwable的用法與區(qū)別
這篇文章主要介紹了java中throws與throw及Throwable的用法和區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Java注解的Retention和RetentionPolicy實例分析
這篇文章主要介紹了Java注解的Retention和RetentionPolicy,結(jié)合實例形式分析了Java注解Retention和RetentionPolicy的基本功能及使用方法,需要的朋友可以參考下2019-09-09Spring多線程通過@Scheduled實現(xiàn)定時任務(wù)
這篇文章主要介紹了Spring多線程通過@Scheduled實現(xiàn)定時任務(wù),@Scheduled?定時任務(wù)調(diào)度注解,是spring定時任務(wù)中最重要的,下文關(guān)于其具體介紹,需要的小伙伴可以參考一下2022-05-05Java調(diào)用C++動態(tài)庫超詳細(xì)步驟講解(附源碼)
C語言因其高效和接近硬件的特性,時常會被用在性能要求較高或者需要直接操作硬件的場合,這篇文章主要介紹了Java調(diào)用C++動態(tài)庫的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04