黑马程序员技术交流社区

标题: 关于Map的疑惑 [打印本页]

作者: 张振纲    时间: 2012-8-29 10:11
标题: 关于Map的疑惑
我们都知道Map也是集合的一种
用于存储键值对
将它内部所有元素取出,可以使用keyset是先将见都取出然后再获取值
那entrySet是如何是如何实现的
两者分别有什么好处?
作者: 唐志兵    时间: 2012-8-29 10:32
本帖最后由 唐志兵 于 2012-8-29 11:10 编辑
  1. public class setDemo {
  2. public static void main(String[] args) {
  3. HashMap<String, String> hm = new HashMap<String, String>();
  4. String value = null;
  5. Map.Entry<String, String> entry = null;

  6. hm.put("1", "hei");
  7. hm.put("2", "ma");
  8. hm.put("3", "hao");

  9. Set<String> s = hm.keySet(); //这里使用keyset迭代集合

  10. Iterator<String> it = s.iterator();
  11. while(it.hasNext()){
  12. value = it.next();
  13. System.out.println(value + " = " + hm.get(value));
  14. }

  15. System.out.println("------------------------");

  16. Set<Map.Entry<String, String>> ss = hm.entrySet(); //使用entryset迭代集合。
  17. Iterator<Map.Entry<String, String>> it2 = ss.iterator();
  18. while(it2.hasNext()){
  19. entry = it2.next();
  20. System.out.println(entry.getKey() + " = " + entry.getValue());
  21. }

  22. }
  23. }
复制代码
entrySet()     返回此映射所包含的映射关系的 Set 视图。
keySet()        返回此映射中所包含的键的 Set 视图。

因为keyset返回的只是键(key)的视图,所以还需要hm.get(value)经过查询才能获取到 值(value)。
区别就是这里了,一个是键视图,一个是返回 映射关系视图。

作者: 王金科    时间: 2012-8-29 11:35
keySet()返回的是此Map集合中包含键的Set集合,有了key,就可以通过  对象.get(key)获取值
entrySet()返回的是此Map集合中,包含映射关系的Set集合,类型是Map.Entry,
有了关系,就可以通过  对象.getKey()获取键,  对象.getValue()获取值
正如楼上兄弟中代码演示的那样
作者: 李志群    时间: 2012-8-29 19:43
5,获取map中所有的元素(对应关系)。
        Map是不具备迭代器的,获取原理就是将map集合先转成set集合,然后在使用迭代器。
       
重要方法一:        必须会的重点: Set<key(丈夫类型)>  keySet();方法
       
重要方法二:Set<Map.Entry<k,v>>entrySet(); 返回的是结婚证,结婚证是唯一的啊 ,就可以取出丈夫和妻子。
                结婚证渠道了就调用        get key(); get value();来获取丈夫和妻子。
               
        接口Map.Entry<K,V>是map类的嵌套类。  其实entry就是map接口中的一个内部接口而已。
作者: 李志群    时间: 2012-8-29 19:45
keyset的方法是知道丈夫 就可以找到妻子,Entryset是 代表的结婚证, 你拿结婚证就可以找到这对夫妻(丈夫和妻子)我这是比喻的哈哈  毕老师有讲过 特经典, 特棒!!




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