Iterator之ListIterator简介

ListIterator是什么?

(参考自百度百科)

java中的ListIterator在Iterator基础上提供了add、set、previous等对列表的操作。但是ListIterator跟Iterator一样,仍是在原列表上进行操作。

Iterator源代码:

package java.util;
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}

ListIterator源代码:

public interface ListIterator<E> extends Iterator<E> {
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove();
void set(E e); void add(E e);
}

Iterator和ListIterator主要区别在以下方面:
1.    ListIterator有add()方法,可以向List中添加对象,而Iterator不能
 
2.    ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
 
3.    ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
 
4.    都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。

自己写的测试code:

public class Temp1 {
public static void main(String[] args) {
String[] strings= "a b c d e f g h i j".split(" "); List<String> list= new ArrayList<>(Arrays.asList(strings));
ListIterator<String> listIterator = list.listIterator();
System.out.println(listIterator.next());
System.out.println(listIterator.next());
System.out.println(listIterator.next());
listIterator.add("x");//abcxde...
System.out.println(listIterator.previous());//x
System.out.println(listIterator.previous());//b
while (listIterator.hasNext()) {
String string = (String) listIterator.next();
System.out.println(string); }
//abcxccxdefghij /*listIterator.remove();
System.out.println(listIterator.next());
listIterator.set("z");//zcde...
System.out.println(listIterator.previous());*/ }
}

output:
a
b
c
x
c
c
x
d
e
f
g
h
i
j

上一篇:JavaScript面向对象之我见


下一篇:excel 2007 无法输入中文