Iterator 迭代器 注意事项(1)

迭代器在使用时,如果在循环内迭代,每循环一次迭代,不能iterator.next多次,使用多次就相当于迭代多次。


eg :

错误的:

public static void main(String[] args) {
		HashMap<String, String> map = new HashMap<String, String>();
		map.put("1", "1111");
		map.put("2", "2222");
		map.put("3", "3333");
		
		Iterator<String> iter = map.keySet().iterator();
		while(iter.hasNext()){
			System.out.println("打印一下="+iter.next());
			System.out.println("使用一下="+iter.next());
		}
	}
打印结果:

打印一下=3
使用一下=2
打印一下=1
Exception in thread "main" java.util.NoSuchElementException
	at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
	at java.util.HashMap$KeyIterator.next(HashMap.java:828)
	at eoss.test.TestIterator.main(TestIterator.java:17)

正确的:

public static void main(String[] args) {
		HashMap<String, String> map = new HashMap<String, String>();
		map.put("1", "1111");
		map.put("2", "2222");
		map.put("3", "3333");
		
		Iterator<String> iter = map.keySet().iterator();
		while(iter.hasNext()){
			String key = iter.next();
			System.out.println("打印一下="+key);
			System.out.println("使用一下="+key);
		}
	}

打印结果:

打印一下=3
使用一下=3
打印一下=2
使用一下=2
打印一下=1
使用一下=1





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小海_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值