經常我們要刪除集合中的某些元素有些可能會這麼寫
復制代碼 代碼如下:
public void operate(List list){
for (Iterator it = list
iterator(); it
hasNext();) {
String str = (String)it
next();
if (str
equals("chengang")){
list
remove(str);
}
}
}
這種寫法一運行就會報如下異常
Exception in thread "main" javautilConcurrentModificationException
at javautilAbstractList$ItrcheckForComodification(AbstractListjava:)
因為list在循環中的時候是不可以刪除它的元素的後來我是這樣做的一種很笨的方法思路是這樣的創建一個List專門存放要被刪除的元素循環過後用ListremoveAll方法把元素刪除代碼如下
復制代碼 代碼如下:
public void operate(List list){
List removeList= new ArrayList();
for (Iterator it = list
iterator(); it
hasNext();) {
String str = (String)it
next();
if (str
equals("chengang")){
removeList
add(str);
}
}
list
removeAll(removeList);
}
這樣也確實可以解決問題了但是方法實在太笨重其實可以有更簡單的更高效的方法就是用Iteratorremove方法如下
復制代碼 代碼如下:
for (Iterator it = list
iterator(); it
hasNext();) {
String str = (String)it
next();
if (str
equals("chengang")){
it
remove();
}
}
所以你對Java的基礎知識了解越多代碼就會寫得越簡潔相反如果你的代碼特別復雜則方法或設計一定有問題
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19832.html