Java迭代器
通常,您需要遍歷集合中的元素。例如,您可能想要顯示每個元素。最簡單的方法是使用迭代器,迭代器是一個實現Iterator或ListIterator介面的物件。
迭代器使您可以遍歷集合,獲取或刪除元素。ListIterator擴充套件了Iterator,允許對列表進行雙向遍歷以及修改元素。
在您可以透過迭代器訪問集合之前,必須先獲取一個迭代器。每個集合類都提供一個iterator()方法,該方法返回指向集合開頭的迭代器。透過使用此迭代器物件,您可以一次訪問集合中的每個元素。
一般來說,要使用迭代器遍歷集合的內容,請遵循以下步驟:
透過呼叫集合的iterator()方法,獲取指向集合開頭的迭代器。
設定一個迴圈,呼叫hasNext()。只要hasNext()返回true,迴圈就繼續迭代。
在迴圈中,透過呼叫next()獲取每個元素。
對於實現List的集合,您還可以透過呼叫ListIterator來獲取迭代器。
迭代器宣告的方法
| 序號 | 方法及描述 |
|---|---|
| 1 | boolean hasNext( ) 如果還有更多元素,則返回true。否則,返回false。 |
| 2 | Object next( ) 返回下一個元素。如果沒有下一個元素,則丟擲NoSuchElementException異常。 |
| 3 | void remove( ) 刪除當前元素。如果嘗試呼叫remove()而沒有在前面呼叫next(),則丟擲IllegalStateException異常。 |
ListIterator宣告的方法
| 序號 | 方法及描述 |
|---|---|
| 1 | void add(Object obj) 在下一個next()呼叫將返回的元素前面,將obj插入列表中。 |
| 2 | boolean hasNext( ) 如果存在下一個元素,則返回true。否則,返回false。 |
| 3 | boolean hasPrevious( ) 如果存在前一個元素,則返回true。否則,返回false。 |
| 4 | Object next( ) 返回下一個元素。如果沒有下一個元素,則丟擲NoSuchElementException異常。 |
| 5 | int nextIndex( ) 返回下一個元素的索引。如果沒有下一個元素,則返回列表的大小。 |
| 6 | Object previous( ) 返回前一個元素。如果沒有前一個元素,則丟擲NoSuchElementException異常。 |
| 7 | int previousIndex( ) 返回前一個元素的索引。如果沒有前一個元素,則返回-1。 |
| 8 | void remove( ) 從列表中刪除當前元素。如果在呼叫next()或previous()之前呼叫remove(),則丟擲IllegalStateException異常。 |
| 9 | void set(Object obj) 將obj賦值給當前元素。這是上次由對next()或previous()的呼叫返回的元素。 |
示例
這是一個演示Iterator和ListIterator的示例。它使用ArrayList物件,但一般原則適用於任何型別的集合。
當然,ListIterator僅適用於實現List介面的那些集合。
import java.util.*;
public class IteratorDemo {
public static void main(String args[]) {
// Create an array list
ArrayList al = new ArrayList();
// add elements to the array list
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
// Use iterator to display contents of al
System.out.print("Original contents of al: ");
Iterator itr = al.iterator();
while(itr.hasNext()) {
Object element = itr.next();
System.out.print(element + " ");
}
System.out.println();
// Modify objects being iterated
ListIterator litr = al.listIterator();
while(litr.hasNext()) {
Object element = litr.next();
litr.set(element + "+");
}
System.out.print("Modified contents of al: ");
itr = al.iterator();
while(itr.hasNext()) {
Object element = itr.next();
System.out.print(element + " ");
}
System.out.println();
// Now, display the list backwards
System.out.print("Modified list backwards: ");
while(litr.hasPrevious()) {
Object element = litr.previous();
System.out.print(element + " ");
}
System.out.println();
}
}這將產生以下結果:
輸出
Original contents of al: C A E B D F Modified contents of al: C+ A+ E+ B+ D+ F+ Modified list backwards: F+ D+ B+ E+ A+ C+
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP