列表迭代器
我们前面学的迭代器是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()返回的最后一个元素 |
列表迭代器的练习
xxxxxxxxxxpackage 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);
}}