在学习ListIterator时遇到的问题。
一、取出并打印list中每一个元素:
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个ArrayList容器。
List list = new ArrayList();
//将list传给show.
show(list);
}
/**
* 功能为:
* 1.打印从list中取出的元素
*/
public static void show(List list) {
// TODO Auto-generated method stub
//给list添加元素。
list.add("111");
list.add("222");
list.add("333");
list.add("444");
System.out.println(list);
//获取ListIterator列表迭代器。
ListIterator it = list.listIterator();
//循环获取list里面的元素
while (it.hasNext()) {
// Object obj = it.next();
// if (obj.equals("444")) {
// it.add("555");
// }
/*
* 当我把这段打印取出来的元素代码放到
* while和for循环不同位置时最后打印的结果都不同。
* 当我只打印取出的元素时是正常的结果
*/
System.out.println(it.next());
}
/*
* 以下是通过for循环实现的。
*/
// for(ListIterator it = list.listIterator();it.hasNext();){
// Object obj = it.next();
// if(obj.equals("4sewr")) {
// it.add("222");
// }
// System.out.println(it.next());
// }
System.out.println(list);
System.out.println(list.size());
}
}
结果为:
可以看到list中每一个元素都被取出来打印到了控制台。并且可以看到list的大小为4。
二、当我想往list中加入元素"555"时:
我把while语句进行了修改。
while (it.hasNext()) {
Object obj = it.next();
if (obj.equals("444")) {
it.add("555");
}
/*
* 当我把这段打印取出来的元素代码放到
* while和for循环不同位置时最后打印的结果都不同。
* 当我只打印取出的元素时是正常的结果
*/
System.out.println(it.next());
}
最后结果是:
可以看到list中第一个元素和第三个元素在控制台看不到,这里我不清楚是什么原因造成的。从打印结果也看不到"555"。
并且list的大小没有变,还是只有4个元素,是不是说添加语句没有执行?
三、当我把打印语句放到while循环首行时:
while (it.hasNext()) {
System.out.println(it.next());
Object obj = it.next();
if (obj.equals("444")) {
it.add("555");
}
/*
* 当我把这段打印取出来的元素代码放到
* while和for循环不同位置时最后打印的结果都不同。
* 当我只打印取出的元素时是正常的结果
*/
}
结果为:
可以看到这次打印出来的是第一个和第三个元素,而看不到第二和第四个元素,但是"555"被添加到了list中并打印出来了。
搞不懂什么原因造成的。那个大神看到了帮我分析一下,谢谢!