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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liguangcaiup 中级黑马   /  2013-6-19 10:54  /  1832 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 liguangcaiup 于 2013-6-19 10:58 编辑

jdk文档说Map.Entry是个接口类型   下面的代码是用Map.Entry遍历Map。怎么感觉Map.Entry能存放对象呢   接口是不能创建对象的,为什么使用是感觉像类那样  
接口和类有什么区别和共同点呢

public static void main(String[] args)
        {
                Map<String,String> map = new HashMap<String,String>();

                map.put("02","zhangsan2");
                map.put("03","zhangsan3");
                map.put("01","zhangsan1");
                map.put("04","zhangsan4");

                //将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);

                }
}

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

3 个回复

倒序浏览
本帖最后由 mvplee 于 2013-6-19 11:05 编辑

我写个伪代码,包你明白,Map.Entry接口是干毛用的
  1. interface Map{

  2.         public static interface Entry
  3.         {
  4.                 public abstruct Object getKey();
  5.                 public abstruct Ojbect getValue();
  6.         }
  7. }
  8. class HashMap implements Map{

  9.         class Hash implements Map.Entry{内部事务,定义在集合内
  10.                 pubilc Object getKey(){}
  11.                 public Object getValue(){}
  12.         }
  13. }
复制代码
内部接口?
静态地?
实现没?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
map.entrySet();   相当于反回了Map.Entry接口的实现类对象

就像迭代器接口Iterator 返回此迭代器一样 不是直接返回这个迭代器实例,而是内部代码返回了一个实现这个接口的类的对象再向上转型
对比一下

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
恩 就是这样的  那只是接口的一个实现类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马