您好,欢迎来到钮旅网。
搜索
您的当前位置:首页关于迭代器中使用next()方法的问题。

关于迭代器中使用next()方法的问题。

来源:钮旅网

问题:在学习Iterator迭代器时候,发现学习的一个知识盲点。

代码如下(示例):

public static void main(String[] args) {
		Map<String,String> all = new HashMap<String,String>();
		all.put("one", "1");
		all.put("two", "2");
		all.put("three", "3");
		all.put("four", "4");
		Set keys = all.keySet();
		Iterator iter = keys.iterator();
		while(iter.hasNext()) {
			System.out.print(iter.next()+":");
			System.out.println(all.get(iter.next()));
		}
		
	}

想通过迭代器,实现HashMap中Key和Value的对应输出,即:one:1 two:2 three:3 four:4

输出结果:

four:1
two:3

自己感觉应该是与Iterator中next()方法有关,调用一次next()方法,指针就会下移一次。上述代码中一次while循环,就调用两次next()方法。即第一次指针指向key=“four”(Hashmap中存放数据是无序的)。调用next()后,指向key=“one”,此时通过get()方法取得的value就是"one"对应的value:1;

重新测试代码如下:

public static void main(String[] args) {
		Map<String,String> all = new HashMap<String,String>();
		all.put("one", "1");
		all.put("two", "2");
		all.put("three", "3");
		all.put("four", "4");
		Set keys = all.keySet();
		Iterator iterTokey = keys.iterator();     //创建一个迭代器用于循环key值
		Iterator iterToValue = keys.iterator();	  //创建一个迭代器用于取出key对应的value
		while(iterTokey.hasNext()) { 
			System.out.print(iterTokey.next()+":");
			System.out.println(all.get(iterToValue.next()));
		}
		
	}

输出结果:

four:4
one:1
two:2
three:3

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务