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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张振纲 中级黑马   /  2012-8-29 10:11  /  1816 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们都知道Map也是集合的一种
用于存储键值对
将它内部所有元素取出,可以使用keyset是先将见都取出然后再获取值
那entrySet是如何是如何实现的
两者分别有什么好处?

评分

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

查看全部评分

4 个回复

倒序浏览
本帖最后由 唐志兵 于 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)。
区别就是这里了,一个是键视图,一个是返回 映射关系视图。

评分

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

查看全部评分

回复 使用道具 举报
keySet()返回的是此Map集合中包含键的Set集合,有了key,就可以通过  对象.get(key)获取值
entrySet()返回的是此Map集合中,包含映射关系的Set集合,类型是Map.Entry,
有了关系,就可以通过  对象.getKey()获取键,  对象.getValue()获取值
正如楼上兄弟中代码演示的那样
回复 使用道具 举报
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接口中的一个内部接口而已。
回复 使用道具 举报
keyset的方法是知道丈夫 就可以找到妻子,Entryset是 代表的结婚证, 你拿结婚证就可以找到这对夫妻(丈夫和妻子)我这是比喻的哈哈  毕老师有讲过 特经典, 特棒!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马