ListIterator接口有两个方法,可以用来反向遍历链表
E previous()
bollean hasPrevious()
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Test {
public Test() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> clink=new ArrayList<Integer>();
clink.add(1);
clink.add(2);
clink.add(3);
System.out.println(clink);
Iterator<Integer> i=clink.iterator();
i.next();//链表要访问下一个位置只能用next()一个一个的访问过去
i.next();//移动两次,移动到第二个位置
i.remove();//将第二个位置的内容删除
clink.add(3);//在第二个位置add 3
System.out.println(clink);
ListIterator<Integer> listIterator=clink.listIterator();
listIterator.next();//listIterator()反向遍历数组,因为listIterator反向遍历的,所以listIterator指针要先往后移,后面的while()才能执行
listIterator.next();
listIterator.next();
while(listIterator.hasPrevious()){
System.out.println(listIterator.previous());
}
listIterator.next();
listIterator.set(2);//取代上一个next()返回的值,如这里就是取代1
listIterator.add(4);//直接从第一个位置开始,跟上一个Iterator无关
listIterator.add(5);
/*listIterator2.next();//因为前面有其他的迭代器操作,所以新的迭代器没法操作
listIterator2.add(6);*/
Iterator<Integer> ii=clink.iterator();//在后面添加一个只能读的迭代器没事
ii.next();
System.out.println(clink);
System.out.println(clink.get(2));//访问第3三的位置,值为5
}
}
控制台输出
[1, 2, 3]
[1, 3, 3]
3
3
1
[2, 4, 5, 3, 3]
5