ListIterator
*属于List接口: (List基本功能)增删改查
*常出现异常:
NoSuchElementException 没有元素可以迭代
ConcurrentModificationException 无法再迭代器中进行修改元素,即遍历过程已明确元素的个数,不可再遍历过程中进行增删改查。在迭代过程,使用了集合的方法对元素进行操作,导致迭代器并不知道集合中的变化,容易引发数据的不确定性。解决方案:在迭代时,不要使用集合的方式操作
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
List list = new ArrayList();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
Iterator it = list.iterator();
while (it.hasNext()) {
// 创建一个Object对象,插入字符串java
Object obj = it.next();
if ("one".equals(obj)) {
list.add("java");
}
System.out.println(it.next());
}
}
}
在Iterator继承ListIterator接口,在此接口还有list.listIterator,称列表迭代器,且只有List接口有,好处是:提供了add set next remove方法,还有listIterator(int index)//按索引为起点进行遍历*
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
List list = new ArrayList();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
ListIterator it = list.listIterator();
while (it.hasNext()) {
// 创建一个Object对象,插入字符串java
Object obj = it.next();
if ("one".equals(obj)) {
// it.add("java");//在"one"后添加
it.set("five");// 替换为five
}
}
System.out.println(list);
}
}