1. 程式人生 > >如何邊遍歷集合邊刪除元素--使用Iterator中的remove()方法

如何邊遍歷集合邊刪除元素--使用Iterator中的remove()方法

在遍歷集合時,想將符合條件的某些元素刪除,開始是用了下面的方法

	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();
			}
		 }
 	}
問題解決