Java集合框架学习(十五) ListIterator接口详解
ListIterator介绍
ListIterator 没有所谓当前元素。
它的游标位置总是位于previous() 和next()返回的元素位置。
Element(0) Element(1) Element(2) ... Element(n-1)
cursor positions: ^ ^ ^ ^ ^
另外,注意:remove()和set(Object)方法并不是依据cursor 位置来操作的,而是依据next() or previous()返回的最后一个元素
位置。
ListIterator使用例子
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorExample {
public static void main(String a[]){
ListIterator<String> litr = null;
List<String> names = new ArrayList<String>();
names.add("Shyam");
names.add("Rajat");
names.add("Paul");
names.add("Tom");
names.add("Kate");
//Obtaining list iterator
litr=names.listIterator();
System.out.println("Traversing the list in forward direction:");
while(litr.hasNext()){
System.out.println(litr.next());
}
System.out.println("\nTraversing the list in backward direction:");
while(litr.hasPrevious()){
System.out.println(litr.previous());
}
}
}
Iterator 对比 ListIterator
1) Iterator 可遍历 List and Set 两者;
ListIterator 只能遍历List
2) Iterator只支持单向遍历;
ListIterator支持双向遍历,向前向后
3) 使用Iterator迭代过程中无法获得元素位置。
ListIterator使用nextIndex() and previousIndex()方法获得元素位置。
4) 使用Iterator迭代过程中无法再修改集合元素, 它会抛出 ConcurrentModificationException ;
使用 ListIterator迭代过程可增加和删除List元素。
5) 使用 Iterator迭代无法替换已经存在的元素;
ListIterator可使用set(E e)方法替换掉next() or previous()方法返回的元素。
6) Iterator的方法:
hasNext()
next()
remove()
ListIterator的方法:
add(E e)
hasNext()
hasPrevious()
next()
nextIndex()
previous()
previousIndex()
remove()
set(E e)