一、Iterator簡介
Iterator是一種迭代器,它可以遍歷集合類中所有元素。
Iterator迭代器經常被用於遍歷集合,其中包括ArrayList、LinkedList、HashSet、TreeSet等集合。
Iterator提供了一個統一的遍歷方式,同時可以防止程序員直接訪問集合中的元素。
二、Iterator的優勢
相對於其他集合遍歷方式,Iterator有以下優勢:
1. 隱藏迭代器的底層實現細節,不必關心元素是否存儲於集合內或近集合上,只需調用hasNext()和next()方法即可訪問元素。
2. Iterator迭代器是線程安全的,可以同時被多個線程使用。
3. Iterator提供了更加簡潔而優美的語法以及不產生額外的負擔。
三、Iterator常用方法
Iterator提供了以下常用方法:
public boolean hasNext() // 如果仍有元素可以迭代,則返回 true public E next() // 返回下一個元素 public void remove() // 從迭代器指向的 collection 中移除最後返回的元素(可選操作)
1. hasNext()方法
hasNext()方法返回一個boolean類型的值,如果還有下一個元素可迭代,方法返回true,否則返回false。
例如:
public static void main(String[] args) { List list = new ArrayList(); list.add("Java"); list.add("Python"); Iterator iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } }
2. next()方法
next()方法返回集合的下一個元素,並且將迭代器的位置向下移動一位。
例如:
public static void main(String[] args) { List list = new ArrayList(); list.add("Java"); list.add("Python"); Iterator iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } }
3. remove()方法
remove()方法用於刪除集合中迭代器訪問的最後一個元素。如果調用remove()方法之前未調用next()方法,或者在上一次調用next()方法之後調用remove()方法,則會拋出IllegalStateException異常。
例如:
public static void main(String[] args) { List list = new ArrayList(); list.add("Java"); list.add("Python"); Iterator iterator = list.iterator(); while (iterator.hasNext()) { String str = iterator.next(); if ("Java".equals(str)) { iterator.remove(); } } System.out.println(list);//輸出:[Python] }
四、Iterator的局限性
Iterator雖然有很多優勢,但它也有一些局限性:
1. 僅能用一次,每調用一次hasNext()和next()方法都會讓迭代器向下移動一次位置,不能重複使用。
2. 不能對集合進行同時的遍歷和修改操作,否則會拋出ConcurrentModificationException異常。
3. 遍歷時不能直接刪除集合元素,只能使用迭代器的remove()方法。
五、總結
Iterator提供了一種簡單而有效的遍歷集合的機制。它不僅隱藏了底層實現細節,還提供了更加簡潔而優美的語法。
需要注意的是,Iterator只能用一次,不能對集合進行同時的遍歷和修改操作,遍歷時只能使用迭代器的remove()方法,否則會拋出異常。
原創文章,作者:DANU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131061.html