黑马程序员技术交流社区

标题: 高级for循环问题 [打印本页]

作者: 盛亚昆    时间: 2012-3-30 01:33
标题: 高级for循环问题
class  MapTest2
{
        public static void main(String[] args)
        {
                TreeMap<Student,String>tm = new TreeMap<Student,String>(new StuNameComparator());
                tm.put(new Student("zsi1",25),"beijing");
                tm.put(new Student("wisi1",21),"ng");
                tm.put(new Student("sisi2",28),"jing");
                tm.put(new Student("aisi3",29),"bei");
                tm.put(new Student("aisi3",29),"shangg");//相同了,判断全部一样,就替代原有的value
                tm.put(new Student("csi4",24),"beng");
               

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

                while (it.hasNext())
                {
                        Map.Entry<Student,String>me=it.next();
                        Student stu=me.getKey();
                        String addr=me.getValue();
                        System.out.println(stu+";"+addr);
                }
        }
}
怎么改遍历器改成for循环啊,高手指点
作者: 贠(yun)靖    时间: 2012-3-30 01:40
for (Iterator<Map.Entry<Student,String>>it=entry.iterator(); it.hasNext(); )  普通for
{
        Map.Entry<Student,String>me=it.next();
    Student stu=me.getKey();
    String addr=me.getValue();
    System.out.println(stu+";"+addr);
}
for (Set<Map.Entry<Student,String>> me : tm.entrySet() )  高级for
{
        Student stu=me.getKey();
    String addr=me.getValue();
    System.out.println(stu+";"+addr);
}
作者: yangshang1    时间: 2012-3-30 06:28
for (Map.Entry<Student0,String> me:entry)  //高级for
                {
                        Student0 stu=me.getKey();
                    String addr=me.getValue();
                    System.out.println(stu+";"+addr);
                }
作者: 李涛涛    时间: 2012-3-30 11:42
把map集合转化为set集合就可以,因为高级for循环使用的要求:数组或者set集合或者实现其接口的对象。你的问题可以有两种解决方法:
Set<Student> set = map.keyset();(set集合里面存的是map中的key值)
for(Student s:set)
{
   String addr = tm.getValue();
}

还有一种就是利用entrySet(这里面存的是键值对)
for (Map.Entry<Student0,String> me:entry)
                {
                        Student0 stu=me.getKey();
                    String addr=me.getValue();
                    System.out.println(stu+";"+addr);
                }




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