java 关于Map 的两个for循环的区别是什么

Map<Integer,String>lhmap=newLinkedHashMap<Integer,String>();lhmap.put(1,"星期一");lhmap.... Map<Integer,String> lhmap = new LinkedHashMap<Integer,String>();
lhmap.put(1, "星期一");
lhmap.put(2, "星期二");
lhmap.put(3, "星期三");
lhmap.put(0, "星期四");
lhmap.put(5, "星期五");
lhmap.put(6, "星期六");
lhmap.put(7, "星期日");
lhmap.put(4, "星期s");

// for(Map.Entry<Integer, String> entry: lhmap.entrySet()) {
// System.out.println(entry.getKey() + ":" + entry.getValue() + "\t");
// }

for (Iterator<Integer> it = lhmap.keySet().iterator();it.hasNext();)
{
Object key = it.next();
System.out.println( key+"="+ lhmap.get(key));
}

------------------------------------------------------------------------------------------
如上,
两个for 的输出是一样的,两种方式的区别是什么
展开
 我来答
ys0798
推荐于2016-10-09 · TA获得超过413个赞
知道答主
回答量:120
采纳率:0%
帮助的人:75.6万
展开全部
//这里是调用Map的entrySet方法迭代出Map中的Entry对象,
//这里Entry对象中其实也是存放的为Key-->Value格式的键值对,其有getKey和getValue方法分别可以取其Key值和Value值
//Entry中的Key--Value键值对和Map中的每一个键值对相对应
//返回映射中包含的映射关系的Set视图。也是一个Set,而Set中每个元素是内部类Map.Entry。
for (Map.Entry<Integer, String> entry : lhmap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue() + "\t");
}
//这里使用迭代器首先迭代出Map的所有Key值,返回映射中包含的键的Set视图。 是key的Set集合
//根据Key值取出Map中的Value值
for (Iterator<Integer> it = lhmap.keySet().iterator(); it.hasNext();) {
Object key = it.next();
System.out.println(key + "=" + lhmap.get(key));
}
//你可以给Map中存N多个数据,然后用上面的方法测试下性能,你回发现entrySet方法比keySet效率会高很多

有不明白的地方 请追问。
追问
两种方式 一般情况下 是可以互用的,对吗???
追答
嗯 可以的,用哪个都可以 但是建议用entrySet
readclub读者
2014-08-26 · 超过30用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:42.6万
展开全部
1.第一个相当于将Map封装成了一个个Entry,这个Entry里面有key和value,要得到key就用getKey (),要得到value就用getValue();
2.第二个用的迭代,具体一点就是将key进行迭代,取出key之后,就可以根据key得到value。
3.区别的话,前者想得到key或者value,互不冲突。后者要得到value必须先得到key。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gerministar
2014-08-26 · TA获得超过166个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:107万
展开全部
Map.Entry是一种数据结构,有2个基本属性,Key和Value,遍历的时候取出每个Engry对象,访问Key和Value属性。后一种是遍历Key值,每次取出一个Key,再根据Key值去Map里面找Value值,效率是不一样的
追问
两种方式 一般情况下 是可以互用的,对吗???
追答
是的,都可以实现遍历Map。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xianliao_2012
2014-08-26 · TA获得超过104个赞
知道答主
回答量:79
采纳率:100%
帮助的人:27.6万
展开全部
第一种:
entrySet每次遍历一行。一次for循环获得一个entrySet,里面包含key和value。用过getKey和getValue获取。

第二种:
keySet().iterator()遍历Map里面的key。通过get(key)的方法获得value。
追问
两种方式 一般情况下 是可以互用的,对吗???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友73f9a3c
2014-08-26 · 超过14用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:26.5万
展开全部
没什么区别呀 就是Iterator迭代器的适用性强一些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式