关于hashmap使用迭代器的问题

本文详细介绍了如何使用Java中的HashMap,并通过迭代器遍历其key、value及键值对集合的具体方法,同时指出了常见错误及其解决方案。

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



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<Integer, String> hm =new HashMap<Integer, String>(); 
	//因为这里是类,类必须要实例化对象才能使用里面的东西。
     
	public static void main(String[] args) {
		Map<Integer, String> hm =new HashMap<Integer, String>();   
		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<Integer> itr1 = hm.keySet().iterator();
		Iterator<String> itr2 =hm.values().iterator();
		Iterator<Entry<Integer, String>> 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.Entry<Integer, String>hm2=itr3.next();
	    	System.out.println(hm2.getValue()+":"+hm2.getKey() );}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值