在遍歷集合時,想將符合條件的某些元素刪除,開始是用了下面的方法
- 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();
}
}
System.out.println(list.size());
}
問題解決