ListIterator

本文深入探讨了Java中ListIterator的使用方法,详细分析了在遍历过程中添加元素导致的异常行为,对比了不同循环结构下元素打印结果的差异,帮助读者理解ListIterator的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习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中并打印出来了。

搞不懂什么原因造成的。那个大神看到了帮我分析一下,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值