黑马程序员技术交流社区

标题: map集合中的entrySet 不是很理解 [打印本页]

作者: 陈波    时间: 2012-4-28 19:39
标题: map集合中的entrySet 不是很理解
Set<Map.Entry<Student,String>> entrySet = tm.entrySet();

                Iterator<Map.Entry<Student,String>> it = entrySet.iterator();

                while(it.hasNext())
                {
                        Map.Entry<Student,String> me = it.next();

                        Student stu = me.getKey();
                        String addr = me.getValue();
                        System.out.println(stu+":::"+addr);
                }
        }
}

这个代码不是很理解 为什么这么写呢 大家帮忙解释一下
作者: 张卯    时间: 2012-4-28 20:02
可以这样理解:
Set是个文件夹,里面装的是结婚证(Map.Entry),结婚证上写着男方(键)和女方(值),Map.Entry代表了这样一种对应关系,并且是一个Map.Entry算一对关系。

作者: 张成龙    时间: 2012-4-28 20:04
entrySet() 方法取得的值是 Set<Map.Entry<Student,String>>类型的,再Map.Entry<Student,String>看做一种类型数据,用迭代器对其进行迭代
然后就是取出对应的键和值。
作者: 光sail    时间: 2012-4-28 20:16
本帖最后由 光sail 于 2012-4-28 20:17 编辑

Set<Map.Entry<Student,String>> entrySet = tm.entrySet(); /*使用 tm.entrySet()方法获取set集合,集合里面放置的是映射的 collection 视图,键的类型是Student ,值是String         
*/
      Iterator<Map.Entry<Student,String>> it = entrySet.iterator(); //通过collection 视图的迭代器来获得映射项引用
                while(it.hasNext())
                {
                        Map.Entry<Student,String> me = it.next();

                        Student stu = me.getKey();  //获取Student类的对应的键
                        String addr = me.getValue();  ////获取String类的对应的值

                        System.out.println(stu+":::"+addr);
                }
        }
}


作者: 孙天    时间: 2012-4-28 20:29
由于Map中没有迭代器,只有将map转成set,才可以使用迭代器,而set集合底层使用的就是map集合。
Set<key> keySet():获取map集合中所有的键的set集合。之所以返回set,是因为键是有唯性。
Set<Map.Entry<key,value>> entrySet():获取map集合中的所有的关系对象。类型是Map.Entry。
作者: 魏征    时间: 2012-4-28 21:33
Set<Map.Entry<Student,String>> entrySet = tm.entrySet();//Map类对象tm调用entrySet方法,它的返回值类型是值个Set类型的泛型是Map.Entry类型对象,MapEntry类对象entrySet是使Map对象tm的键值存在某种关系的值。

                Iterator<Map.Entry<Student,String>> it = entrySet.iterator();//对Set集合对象entrySet进行迭代,这个迭代器泛型的是Set集合对象的泛型。

                while(it.hasNext())
                {
                        Map.Entry<Student,String> me = it.next();//设定Map.Entry对象me为指针

                        Student stu = me.getKey();//调用Map.Entry类方法getKey()返回的值类型为Map集合对象tm中的键。
                        String addr = me.getValue();//调用Map.Entry类方法getValue()返回的值类型为Map集合对象tm中的值。
                        System.out.println(stu+":::"+addr);





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