黑马程序员技术交流社区
标题:
关于Map集合的两种取出方式
[打印本页]
作者:
高会仁
时间:
2012-12-9 02:03
标题:
关于Map集合的两种取出方式
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
//map集合的两种取出方式
public class MapDemo2 {
/**
* @param args
*/
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("01", "张三");
map.put("02", "李四");
map.put("03", "王五");
map.put("04", "关羽");
//将Map集合中的映射关系取出,存入到set集合中
// Set<Map.Entry<String, String>> entrySet = map.entrySet();
//
// Iterator<Map.Entry<String, String>> it = entrySet.iterator();
//
// while (it.hasNext()){
// Map.Entry<String, String> me = it.next();
// String key = me.getKey();
// String value = me.getValue();
// System.out.println(key+"---"+value);
// }
Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
while(it.hasNext()){
String key = it.next();
String value = map.get(key);
System.out.println(key+"---"+value);
}
}
}
复制代码
一种是Set<k> keySet 方式,另一种是注释掉的Set<Map.Entry<k,v>> entrySet方式
我知道Set<Map.Entry<k,v>>这个方式是将map集合中的映射关系存入到了set集合中。但以上程序两种方式所得结果一样,我就不知道,什么时候该用Set<k> keySet 方式,什么时候该用Set<Map.Entry<k,v>> entrySet方式???
作者:
高会仁
时间:
2012-12-9 14:02
求哪位大神回答下、、、{:soso_e101:}
作者:
- _奢华
时间:
2012-12-9 14:15
按效率分析
对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。
作者:
王舒玮
时间:
2012-12-9 18:08
这个问题,我通俗的说下吧!你可以把键key和值value理解为夫妻中丈夫和妻子。对于Set<k> keySet 方式:就相当于在集合中丈夫key先出现,然后key会自己找他们对应的value;而Set<Map.Entry<k,v>>方式:可以把丈夫和妻子放在一张结婚证上,他们在集合中是成对出现的。希望我这么说有助于理解
作者:
高会仁
时间:
2012-12-9 23:58
谢谢王同学的回答,很形象。懂了不少{:soso_e113:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2