1. 程式人生 > >Java集合怎麼一邊刪除一邊遍歷

Java集合怎麼一邊刪除一邊遍歷

問題描述:
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()方法來實現集合的一邊刪除一邊遍歷。