列表迭代器
我们前面学的迭代器是Iterator
ListIterator:列表迭代器,也就是List集合的ListIterator方法
该迭代器是通过List集合的ListIterator方法得到的,所以说它是List集合特有的迭代器
ListIterator方法的作用是返回列表中的列表迭代器,按适当的顺序。在迭代期间修改列表,并获取列表中迭代器的当前位置
该迭代器与ListIterator迭代器不同的是,该迭代器可以允许沿任一方向遍历列表,即不单只可以从头到尾遍历,也可以从尾到头遍历
该迭代器在java.util包下。该迭代器是一个接口,继承自Iterator
ListIterator迭代器除了有Iterator迭代器的hasNext方法、next方法,还有如下方法
返回值类型 | 方法 | 描述 |
---|---|---|
void | add(E e) | 将指定的元素插入列表,可选操作 |
boolean | hasNext() | 如果此列表迭代器在向前方向遍历列表时具有更多元素,则返回true |
boolean | hasPrevious() | 如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true |
E | next() | 返回列表中的下一个元素,并且前进光标位置 |
int | nextIndex() | 返回由后续调用返回的元素的索引 |
E | previous() | 返回列表中的上一个元素,并向后移动光标位置 |
int | previousIndex() | 返回由后续调用返回的元素的索引 |
void | remove() | 从列表中删除next()或previous(),可选操作,返回的最后一个元素 |
void | set(E e) | 用指定的元素,可选操作,替换next()或previous()返回的最后一个元素 |
列表迭代器的练习
xxxxxxxxxx
package ch14;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class a_10_1测试 {
public static void main(String[] args) {
//创建集合对象
List<String> list = new ArrayList<String>(); //选中List,按Ctrl+B查看源码。再选中ArrayList查看一下。分别都找listIterator<E>
//添加元素
list.add("0");
list.add("1");
list.add("2");
list.add("world");
//--------------------------------------------------------------------------------------------------------------
//正向遍历
//通过List集合的ListIterator方法得到。之前是直接使用Iterator,现在是使用ListIterator。开发中用Iterator比较多,即前面学的
ListIterator<String> lit = list.listIterator();
while (lit.hasNext()){
String s = lit.next();
System.out.println(s);
}
System.out.println("-------------------");
//----------------------------------------------------------------------------------------------------------------
//逆向遍历。实际开发中用的比较少
while (lit.hasPrevious()){
String s = lit.previous();
System.out.println(s);
}
System.out.println("-------------------");
//-------------------------------------------------------------------------------------------------------------------
//主要要学的是add(E e) 将指定的元素插入列表,可选操作
//例如下面
//获取列表迭代器
//下面那行,调用listIterator方法得到的实际是ListIterator的实现类对象,也就是下面那行的ListItr的对象,因为ListItr实现了ListIterator接口
ListIterator<String> lit2 = list.listIterator();
while (lit2.hasNext()){
String s2 = lit2.next();
if(s2.equals("world")){
lit2.add("我是add插入元素"); //前面学的Iterator是没有添加方法的。现在学的ListIterator有添加方法
//前面学的Iterator是通过集合来添加元素,现在学的ListIterator可以直接在上一行通过列表迭代器lit2的add方法进行添加
//之前学的Iterator是通过集合直接添加元素会报错,而现在学的ListIterator不会报错
//想知道原因的去'a_10_2源码分析.txt'看
}
}
System.out.println(list);
}
}