- 相關(guān)推薦
推薦刪除JAVA集合中元素的實(shí)現(xiàn)代碼
刪除JAVA集合中元素的實(shí)現(xiàn)代碼
經(jīng)常我們要?jiǎng)h除集合中的某些元素。有些可能會(huì)這么寫。
復(fù)制代碼 代碼如下:
public void operate(List list){
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
list.remove(str);
}
}
}
這種寫法一運(yùn)行就會(huì)報(bào)如下異常:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
因?yàn)閘ist在循環(huán)中的時(shí)候是不可以刪除它的元素的。后來我是這樣做的,一種很笨的方法,思路是這樣的:創(chuàng)建一個(gè)List專門存放要被刪除的元素,循環(huán)過后,用List.removeAll方法把元素刪除。代碼如下:
復(fù)制代碼 代碼如下:
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);
}
這樣也確實(shí)可以解決問題了,但是方法實(shí)在太笨重,其實(shí)可以有更簡(jiǎn)單的更高效的方法,就是用Iterator.remove方法,如下:
復(fù)制代碼 代碼如下:
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
it.remove();
}
}
所以,你對(duì)Java的基礎(chǔ)知識(shí)了解越多,代碼就會(huì)寫得越簡(jiǎn)潔。相反如果你的代碼特別復(fù)雜,則方法或設(shè)計(jì)一定有問題。
【刪除JAVA中元素的實(shí)現(xiàn)代碼】相關(guān)文章:
java構(gòu)造函數(shù)實(shí)現(xiàn)代碼示例08-23
Java實(shí)現(xiàn)在不同線程中運(yùn)行的代碼實(shí)例詳解06-11
java中通用的線程池實(shí)例代碼08-27
PHP中刪除數(shù)組中特定元素的兩種方發(fā)09-28
關(guān)于循環(huán)的java代碼示例09-26
Java代碼的基本知識(shí)10-09
讓JAVA代碼更高效的技巧10-05
怎么刪除Word中無法刪除的線條09-07