Java集合怎麼一邊刪除一邊遍歷
阿新 • • 發佈:2019-02-09
問題描述:
Java新手容易犯一個錯誤,就是遍歷集合的同時刪除集合的元素。那麼程式會發生什麼呢?下面舉個小例子。
import java.util.HashSet;
import java.util.Iterator;
public class IterAndRemove {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("zq");
set.add("allen" );
set.add("alex");
delete(set);
//delete1(set);
for(String s : set){
System.out.println(s);
}
}
public static void delete(HashSet<String> hashSet) {
for(String s : hashSet){
if(s.equals("alex")){
hashSet.remove(s);
}
}
}
public static void delete1(HashSet<String> hashSet) {
Iterator<String> iterator = hashSet.iterator();
while(iterator.hasNext()){
String s = iterator.next();
if(s.equals("alex")){
iterator.remove();
}
}
}
}
程式執行delete()方法,發生錯誤。
執行方法delete1()方法,則程式正確的返回:
allen
zq
所以,可以採用Iterator中的remove()方法來實現集合的一邊刪除一邊遍歷。