A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 程佳佳 于 2011-11-24 16:48 编辑

HashMap中keySet和entrySet两种取出方式有什么区别?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
冯敏 黑马帝 2011-11-24 16:10:10
沙发
keySet和entrySet是对HashMap常用的两种遍历方法,对于keySet其实是遍历了2次,一次是转为iterator(遍历器),一次就从HashMap中取出key所对于的value,而entryset只是遍历了一次,他把key和value都放到了entry中,这个样的话,用entryset遍历会比较快噢,如下:可以一次得到key和value
for(Map.Entry<Person, String> temp : map.entrySet())
                        System.out.println(temp.getKey()+"   "+temp.getValue());
        }

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
根本就是两种方法。首先返回值不同,keySet返回值为Set<K>集合 ( 返回此映射中包含的键的 Set 视图)。
entrySet返回值为Set<Map.Entry<K,V>> (返回此映射中包含的映射关系的 Set 视图)。
范例:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;


public class Demo {
       
        public static void main(String args[])
        {
                HashMap<String,String> hm=new HashMap<String,String>();
                hm.put("NO1", "hello");
                hm.put("NO2", "world");
                Set<String> se=hm.keySet();
                Iterator<String> ite=se.iterator();
                while(ite.hasNext())
                {
                        //只能输出key的值
                        System.out.println(ite.next());
                }
               
                Set<Map.Entry<String,String>> se2=hm.entrySet();
                Iterator<Map.Entry<String,String>> ite2=se2.iterator();
                while(ite2.hasNext())
                {
                        //可以输出key和value的值
                        System.out.println(ite2.next());
                }
        }
}
运行一下你就可以体会到两种方法的不同处了。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 赞一个!

查看全部评分

回复 使用道具 举报
知道了,谢谢啦
回复 使用道具 举报
keySet(),取出的是key的集合,得到了key的集合,就康可以取出value的值了
entrySet()取出的是key和value这两个在一起的集合。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马