Java ListIterator示例
时间:2020-01-09 10:35:00 来源:igfitidea点击:
在Java中,有一个Iterator接口,它提供对集合(列表,集合等)的迭代器,但在Java中,还有另一个接口ListIterator,它专门为诸如ArrayList,LinkedList,CopyOnWriteArrayList的列表提供迭代器。
尽管迭代器只能向前移动,但Java中的ListIterator提供了沿任一方向遍历List的功能;前进或者后退,这是Java中Iterator和ListIterator之间的区别之一。其他差异如下。
- 这两个接口都具有remove()方法,可在创建迭代器后安全地从List中删除元素,但ListIterator也具有add()方法。
- ListIterator还具有set()方法来在迭代List时更改元素。
ListIterator中没有当前元素
ListIterator没有当前元素。它的光标位置始终位于通过调用previous()返回的元素和通过调用next()返回的元素之间。下图显示了长度为n的列表的可能光标位置。
Java ListIterator方法
Java中的ListIterator接口提供以下方法:
- add(E e)–将指定的元素插入列表。
- hasNext()–在向前遍历列表时,如果此列表迭代器包含更多元素,则返回true。
- hasPrevious()-如果在反向遍历列表时此列表迭代器包含更多元素,则返回true。
- next()–返回列表中的下一个元素并前进光标位置。
- nextIndex()–返回元素的索引,该元素的索引将由对next()的后续调用返回。
- previous()–返回列表中的上一个元素,并将光标位置向后移动。
- previousIndex()–返回元素的索引,该元素的索引由后续对previous()的调用返回。
- remove()–从列表中删除next()或者previous()返回的最后一个元素。
- set(E e)–将next()或者previous()返回的最后一个元素替换为指定的元素。
具有双向遍历的Java ListIterator示例
import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class ListIterationDemo { public static void main(String[] args) { List<String> carList = new LinkedList<String>(); carList.add("Audi"); carList.add("Jaguar"); carList.add("BMW"); carList.add("Mini Cooper"); //Getting ListIterator ListIterator<String> ltr = carList.listIterator(); //forward iteration System.out.println("List iteration - forward direction"); while(ltr.hasNext()){ System.out.println(ltr.next()); } // backward iteration System.out.println("List iteration - backward direction"); while(ltr.hasPrevious()){ System.out.println(ltr.previous()); } } }
输出:
List iteration - forward direction Audi Jaguar BMW Mini Cooper List iteration - backward direction Mini Cooper BMW Jaguar Audi
使用ListIterator的add()和set()方法的示例
import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class ListIterationDemo { public static void main(String[] args) { List<String> carList = new LinkedList<String>(); carList.add("Audi"); carList.add("Jaguar"); carList.add("BMW"); carList.add("Mini Cooper"); //Getting ListIterator ListIterator<String> ltr = carList.listIterator(); while(ltr.hasNext()){ String car = ltr.next(); if(car.equals("BMW")) { ltr.add("Mercedes"); } if(car.equals("Mini Cooper")) { ltr.set("Camry"); } } System.out.println("List elements- " + carList); } }
输出
List elements- [Audi, Jaguar, BMW, Mercedes, Camry]