win2003创建网站自己的网站在哪里找
Iterator 和 ListIterator 都是 Java 集合框架中用于遍历集合元素的接口,但它们有一些区别:
使用的范围:Iterator可以迭代所有集合,而ListIterator 只能用于List及其子类。
继承关系:ListIterator 继承 Iterator,并且ListIterator包含的方法更多
遍历的方向:Iterator 接口只能向前遍历集合元素,而 ListIterator 接口可以双向遍历,即向前或向后遍历集合元素。
遍历的能力:Iterator 接口只能遍历集合,而 ListIterator 接口除了遍历集合元素外,还可以修改集合中的元素,添加新的元素,以及获取当前遍历位置的索引。
遍历的起点:Iterator 接口的遍历起点是集合的开头,而 ListIterator 接口可以通过 hasPrevious() 和 previous() 方法从集合的末尾开始遍历。
遍历的性能:Iterator 接口的遍历性能通常比 ListIterator 接口更好,因为 ListIterator 接口需要维护额外的指针和索引信息。
示例如下所示:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;public class Test{public static void main(String[] args) {ArrayList<String> arrayList=new ArrayList<>();arrayList.add("张三");arrayList.add("李四");arrayList.add("王五");Iterator<String> iterator=arrayList.iterator();System.out.println("iterator遍历的结果为:");while(iterator.hasNext()){String element=iterator.next();System.out.print(element+" ");System.out.println();}ListIterator<String> listIterator=arrayList.listIterator();System.out.println("listIterator正向遍历的结果为:");while(listIterator.hasNext()){String element=listIterator.next();if(element.equals("王五")){//在遍历过程中,修改集合中的元素listIterator.set("Lisa");}System.out.println(element+" ");}ListIterator<String> listIterator2=arrayList.listIterator();System.out.println("listIterator修改后正向遍历的结果为:");while(listIterator2.hasNext()){String element=listIterator2.next();System.out.println(element+" ");}System.out.println("listIterator修改后反向遍历的结果为:");while(listIterator.hasPrevious()){String element=listIterator.previous();System.out.println(element+" ");}}
}
 
输出如下所示:
iterator遍历的结果为:
张三 
李四 
王五 
listIterator正向遍历的结果为:
张三 
李四 
王五 
listIterator修改后正向遍历的结果为:
张三 
李四 
Lisa 
listIterator修改后反向遍历的结果为:
Lisa 
李四 
张三
