在本教程中,我們將借助示例學(xué)習(xí)Java ListIterator接口。
Java集合框架的接口ListIterator提供了訪問列表元素的功能。
它是雙向的。 這意味著它允許我們在兩個方向上迭代列表的元素。
它繼承了Iterator接口。
List接口提供了ListIterator()方法,該方法返回ListIterator接口的實例。
ListIterator接口提供了可用于對列表元素執(zhí)行各種操作的方法。
hasNext() - 如果列表中存在元素,則返回true
next() - 返回列表的下一個元素
nextIndex() - 返回next()方法將返回的元素的索引
previous() - 返回列表的前一個元素
previousIndex()- 返回previous()方法將返回的元素的索引
remove()- 刪除由next()或previous()返回的元素
set() - 將next()或previous()返回的元素替換為指定的元素
在下面的示例中,我們在一個數(shù)組列表中實現(xiàn)了ListIterator接口的next()、nextIndex()和hasNext()方法。
import java.util.ArrayList; import java.util.ListIterator; class Main { public static void main(String[] args) { //創(chuàng)建一個ArrayList ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(3); numbers.add(2); System.out.println("ArrayList: " + numbers); //創(chuàng)建ListIterator的實例 ListIterator<Integer> iterate = numbers.listIterator(); //使用next()方法 int number1 = iterate.next(); System.out.println("下一元素: " + number1); //使用nextIndex() int index1 = iterate.nextIndex(); System.out.println("下一元素位置: " + index1); //使用hasNext()方法 System.out.println("還有下一個元素嗎? " + iterate.hasNext()); } }
輸出結(jié)果
ArrayList: [1, 3, 2] 下一元素: 1 下一元素位置: 1 還有下一個元素嗎? true
在下面的示例中,我們在數(shù)組列表中實現(xiàn)了ListIterator接口的previous()和previousIndex()方法。
import java.util.ArrayList; import java.util.ListIterator; class Main { public static void main(String[] args) { //創(chuàng)建一個ArrayList ArrayList<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(3); numbers.add(2); System.out.println("ArrayList: " + numbers); //創(chuàng)建ListIterator的實例 ListIterator<Integer> iterate = numbers.listIterator(); iterate.next(); iterate.next(); //使用previous()方法 int number1 = iterate.previous(); System.out.println("上一個元素: " + number1); //使用previousIndex () int index1 = iterate.previousIndex(); System.out.println("上一個元素的位置: " + index1); } }
輸出結(jié)果
ArrayList: [1, 3, 2] 上一個元素: 3 上一個元素的位置: 0
在上面的實例中,最初迭代器的實例在1之前。因為在1之前沒有元素,所以調(diào)用previous()方法將拋出異常。
然后,我們使用了next()2次方法?,F(xiàn)在Iterator實例將在3到2之間。
因此,previous()方法返回3。