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 的输出是一样的,两种方式的区别是什么 展开
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 的输出是一样的,两种方式的区别是什么 展开
5个回答
展开全部
//这里是调用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效率会高很多
有不明白的地方 请追问。
//这里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
展开全部
1.第一个相当于将Map封装成了一个个Entry,这个Entry里面有key和value,要得到key就用getKey (),要得到value就用getValue();
2.第二个用的迭代,具体一点就是将key进行迭代,取出key之后,就可以根据key得到value。
3.区别的话,前者想得到key或者value,互不冲突。后者要得到value必须先得到key。
2.第二个用的迭代,具体一点就是将key进行迭代,取出key之后,就可以根据key得到value。
3.区别的话,前者想得到key或者value,互不冲突。后者要得到value必须先得到key。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Map.Entry是一种数据结构,有2个基本属性,Key和Value,遍历的时候取出每个Engry对象,访问Key和Value属性。后一种是遍历Key值,每次取出一个Key,再根据Key值去Map里面找Value值,效率是不一样的
追问
两种方式 一般情况下 是可以互用的,对吗???
追答
是的,都可以实现遍历Map。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一种:
entrySet每次遍历一行。一次for循环获得一个entrySet,里面包含key和value。用过getKey和getValue获取。
第二种:
keySet().iterator()遍历Map里面的key。通过get(key)的方法获得value。
entrySet每次遍历一行。一次for循环获得一个entrySet,里面包含key和value。用过getKey和getValue获取。
第二种:
keySet().iterator()遍历Map里面的key。通过get(key)的方法获得value。
追问
两种方式 一般情况下 是可以互用的,对吗???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没什么区别呀 就是Iterator迭代器的适用性强一些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询