在Java中,迭代器(Iterator)提供了一種遍歷集合(如List、Set等)元素的通用方法。當使用迭代器遍歷集合時,可能會遇到一些異常情況,如:
NoSuchElementException
:當調用Iterator
的next()
方法時,如果集合中沒有更多的元素,將拋出此異常。ConcurrentModificationException
:當迭代器檢測到集合在迭代過程中被修改(如添加或刪除元素),將拋出此異常。為了處理這些異常,可以使用以下方法:
try-catch
語句捕獲異常:import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExceptionHandling {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
try {
String element = iterator.next();
System.out.println(element);
} catch (NoSuchElementException e) {
System.out.println("No more elements in the collection.");
}
}
}
}
try-with-resources
語句(僅適用于Java 7及更高版本):import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExceptionHandling {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
try (Iterator<String> iterator = list.iterator()) {
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
} catch (NoSuchElementException e) {
System.out.println("No more elements in the collection.");
}
}
}
在調用next()
方法之前,可以使用hasNext()
方法檢查集合中是否還有元素。如果集合在迭代過程中被修改,可以采取適當的措施,如創建一個新的迭代器或使用ConcurrentHashMap
等線程安全的集合類。
請注意,ConcurrentModificationException
通常表示在迭代過程中對集合進行了不安全的修改。為了避免此異常,可以使用Iterator
的remove()
方法(如果支持)來刪除元素,或者使用線程安全的集合類。