如何邊遍歷集合邊刪除元素--使用Iterator中的remove()方法
阿新 • • 發佈:2019-02-17
在遍歷集合時,想將符合條件的某些元素刪除,開始是用了下面的方法
public static void main(String[] args) throws UnsupportedEncodingException { List<String> list = new ArrayList<String>(); list.add("abc"); list.add("bbc"); list.add("cbc"); Iterator<String> it = list.iterator(); while(it.hasNext()){ String str = it.next(); System.out.println(str); if(str.equals("abc")){ list.remove(str); } } }
結果報下面的異常
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at junit.Test.main(Test.java:23)
查了下,原來java中的集合邊遍歷邊刪除是需要使用迭代器中的方法的,改為下面
問題解決public static void main(String[] args) throws UnsupportedEncodingException { List<String> list = new ArrayList<String>(); list.add("abc"); list.add("bbc"); list.add("cbc"); Iterator<String> it = list.iterator(); while(it.hasNext()){ String str = it.next(); System.out.println(str); if(str.equals("abc")){ it.remove(); } } }