java学习注意事项:java类集迭代器的next()问题

运行程序:
<pre name="code" class="java"><pre name="code" class="java">import java.util.Iterator;
import java.util.List;


public class ItDemo {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("da");
		list.add("xiao");
		list.add("chang");
		Iterator<String> it = list.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
			System.out.println(it.next().length());
		}
	}
}


 
 

结果如下:

da
4
chang
Exception in thread "main" java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(Unknown Source)
at collections.ItDemo.main(ItDemo.java:16)

其实我本意是想输出类集中元素的内容及内容的长度,但输出元素"da"后输出的不是其长度2,而是4,其实4实际上输出的是"xiao",而输出"chang"后,发生异常NoSuchElementException,顾名思义,在输出"chang"以后list里已经没有元素了,于是发现以下问题:

next()方法指向的是list的下一个元素!

因此很容易就明白为什么会出现以上的输出结果。代码改成以下即可:

while(it.hasNext()){
			String str = it.next();
			System.out.println(str);
			System.out.println(str.length());
		}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值