黑马程序员技术交流社区

标题: HashMap中keySet和entrySet两种取出方式有什么区别? [打印本页]

作者: 程佳佳    时间: 2011-11-24 15:56
标题: HashMap中keySet和entrySet两种取出方式有什么区别?
本帖最后由 程佳佳 于 2011-11-24 16:48 编辑

HashMap中keySet和entrySet两种取出方式有什么区别?
作者: 冯敏    时间: 2011-11-24 16: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());
        }

作者: 侯伟浩    时间: 2011-11-24 16:21
根本就是两种方法。首先返回值不同,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());
                }
        }
}
运行一下你就可以体会到两种方法的不同处了。
作者: 程佳佳    时间: 2011-11-24 16:48
知道了,谢谢啦
作者: 後天__牛永志    时间: 2011-11-24 16:55
keySet(),取出的是key的集合,得到了key的集合,就康可以取出value的值了
entrySet()取出的是key和value这两个在一起的集合。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2