230 «列表迭代器
(这节课很复杂,半懂)
> 实际上,逆序输出很少用,正序输出多用iterator而非listiterator,重点掌握iterator即可
ListIterator,列表迭代器,通过List集合的listIterator()方法得到,是List集合特有的迭代器
列表的迭代器,允许程序员沿任意方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置。
An iterator for lists that allows the programmer to traverse the list in either direction, modify the list during iteration, and obtain the iterator's current position in the list. A ListIterator has no current element; its cursor position always lies between the element that would be returned by a call to previous() and the element that would be returned by a call to next(). An iterator for a list of length n has n+1 possible cursor positions, as illustrated by the carets (^) below: | 列表的迭代器,允许程序员沿任意方向遍历列表,在迭代过程中修改列表,并获取迭代器在列表中的当前位置。ListIterator没有当前元素;其光标位置始终位于调用previous()返回的元素和调用next()返回的元素之间。长度为n的列表的迭代器有n+1个可能的光标位置,如下面的插入符号(^)所示: |
ListIterator的常用方法
方法 | 说明 | |
1 | E next() | 返回迭代中的下一个元素 |
2 | boolean hasNext() | 如果迭代具有更多元素,则返回true,否则false |
3 | E previous() | 返回列表中的上一个元素 |
4 | boolean hasPrevious() | 如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true,否则false |
--------------------------------------------------------------
package e230;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
// outline
// 1.create object,,,2.add elements
// 通过List集合的listIterator()方法得到,ListIterator-iterator
// ---add()---
// 1.get iterator,,,2.add elements by lit.add()
public class ListIteratorDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("230");
list.add("hello");
list.add("world");
ListIterator<String> lit = list.listIterator();
System.out.println("21.s:");
while (lit.hasNext()){
String s = lit.next();
System.out.println("\t"+s);
}
System.out.println("27.reserve order output s:");
while (lit.hasPrevious()){
String s = lit.previous();
System.out.println("\t"+s);
}
System.out.println("33.add elements by lit.add()");
while (lit.hasNext()){
String s = lit.next();
if (s.equals("hello")){
lit.add("tracy");
}
}
System.out.println("\t"+list);
}
}