java中迭代器ListIterator的问题,求高手解答

输出为:
[add1, add2, add3, add4]
0
add1
2
add3
set.....true
add.....true
[add1, add2, 更换add3, add4, 增加元素]

问题:1.为什么remove没起作用? 测试若将add()语句删除的话,即OK。
2.在角标为1时没有相应的输出?
2.为什么if()语句的内容相跟这输出?
求给高手大大给个解释,谢谢!

第1个回答  推荐于2016-09-29
在while前面加上四句
System.out.println(lit.next());
System.out.println(lit.next());
System.out.println(lit.next());
System.out.println(lit.next());
你就明白了。
问题出在lit.next().equals("add4"),没有remove是因为你在第一次循环中做这个判断的时候就已经把add2给取了。第二次循环直接从add3开始。
所以循环实际上只循环了两次 ,所以add2(下标1)和add4(下标3)都不会被循环到,增加的操作实在第二次循环的时候执行的,也就是在add3
第三个if(lit.next().equals("add4"))实际上在一个循环中去了两次迭代器的值。这个时候索引就已经变了。你去看看api就明白了。
要实现这个过程其实没必要用迭代器。用循环就好了。本回答被提问者采纳
相似回答