关于hashmap使用迭代器的问题



keySet获得的只是key值的集合,valueSet获得的是value集合,entryset获得的是键值对的集合。

package com.test2.test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class mapiterator {
	//想想为什么不能再这里Map hm =new HashMap(); 
	//因为这里是类,类必须要实例化对象才能使用里面的东西。
     
	public static void main(String[] args) {
		Map hm =new HashMap();   
		hm.put(1, "lichen");
		hm.put(2, "huwang");
		hm.put(3, "lizhou");
		hm.put(4, "sunwei");
		hm.put(5, "likai");
		hm.put(6, "hutao");
		Iterator itr1 = hm.keySet().iterator();
		Iterator itr2 =hm.values().iterator();
		Iterator> itr3 =hm.entrySet().iterator();
		while (itr1.hasNext()){System.out.println(itr1.next());}
	        while (itr2.hasNext()){System.out.println(itr2.next());}
	        while (itr3.hasNext()){System.out.println(itr3.next().getValue()+":"+itr3.next().getKey() );}
		
            
	}

}

结果:
1
2
3
4
5
6
lichen
huwang
lizhou
sunwei
likai
hutao
lichen:2
lizhou:4
likai:6


为什么迭代集合会只有3行呢而且是错的,因为itr3.next()在输出中出现了俩次,为了保证正确需要将itr3.next()值放在一个变量中。


	while (itr1.hasNext()){System.out.println(itr1.next());}
	while (itr2.hasNext()){System.out.println(itr2.next());}
	//while (itr3.hasNext()){System.out.println(itr3.next().getValue()+":"+itr3.next().getKey() );}
	while (itr3.hasNext()){
	    	Map.Entryhm2=itr3.next();
	    	System.out.println(hm2.getValue()+":"+hm2.getKey() );}



你可能感兴趣的:(Java,java)