如何刪除JAVA集合中的元素
來源:互聯網
上載者:User
經常我們要刪除集合中的某些元素。 有些可能會這麼寫。 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" java.util.ConcurrentModificationException at java.util.AbstractList$ Itr.checkForComodification(AbstractList.java:449) 因為list在迴圈中的時候是不可以刪除它的元素的。 後來我是這樣做的,一種很笨的方法,思路是這樣的:創建一個List專門存放要被刪除的元素,迴圈過後,用List.removeAll方法把元素刪除。 代碼如下: 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); }這樣也確實可以解決問題了,但是方法實在太笨重,其實可以有更簡單的更高效的方法,就是用Iterator.remove方法,如下: for (Iterator it = list.iterator(); it.hasNext();) { String str = (String)it.next(); if (str.equals("chengang")){ it.remove(); } }所以,你對JAVA的基礎知識瞭解越多,代碼就會寫得越簡潔。 相反如果你的代碼特別複雜,則方法或設計一定有問題。