【发布时间】:2020-09-01 14:34:15
【问题描述】:
我正在练习 Java 代码 - iterator 和 listIterator
并且很难理解下面代码的结果。
代码:
import java.util.*;
public class ListIteratorCollection {
public static void main(String[] args) {
List<String> list = Arrays.asList("A","B","C","D");
list = new ArrayList<>(list);
ListIterator<String> litr = list.listIterator();
String str;
while(litr.hasNext()){
str = litr.next();
System.out.print(str + '\t');
if(str.equals("A"))
litr.add("A-add");
}
System.out.println();
while(litr.hasPrevious()){
str = litr.previous();
System.out.print(str + '\t');
if(str.equals("C"))
litr.add("C-add");
}
System.out.println();
for(Iterator<String> itr = list.iterator(); itr.hasNext();)
System.out.print(itr.next() + '\t');
System.out.println();
}
}
结果:
A B C D
D C C-加 B A-加 A
A A-加 B C-加 C D
我想知道为什么不打印A-add(在第一个while循环中),但打印C-add(在第二个while循环中)。
它们都是新添加到现有列表中的,while 循环结构相似(我认为?)。
谁能解释一下?
【问题讨论】: