for(Iterator iterator = sites.keySet().iterator(); iterator.hasNext();) {
  
         String s3 = (String)iterator.next();
            Site site = (Site)sites.get(s3);
            int i;
            if(s2.equalsIgnoreCase(site.getName()))
                i = site.getId();
        }
这段程序最让我看不懂的就是for循环里面的条件了.大侠们你们能看的懂么.看懂的留下几句指导一下.先谢谢了.最好把全部解释下.我学习了3个星期JAVA自以为不错了.这段程序让我傻眼了55555

解决方案 »

  1.   

    非常简单,你可以这么看它!Iterator iterator = sites.keySet().iterator();
    //可以猜测, sites是一个map吧, 类型是 Map<String, Site>for(; iterator.hasNext(); ) {
      
             String s3 = (String)iterator.next(); //取得下一个key而已;
                Site site = (Site)sites.get(s3);  //然后用key取site
                int i;
                if(s2.equalsIgnoreCase(site.getName())) 比较site的name, 忽略大小写。
                    i = site.getId(); //取得ID
            }
      

  2.   

    遍历把Map sites 里面的数据取出来,很常见的写法
      

  3.   

    Iterator迭代,可以用来遍历数据,
    for(Iterator iterator = sites.keySet().iterator(); iterator.hasNext();) {
       (定义,从sites.keySet()中获得一个迭代器------)(循环条件,判断是否还有数据)
             String s3 = (String)iterator.next();//从迭代器中获得下一条数据
                Site site = (Site)sites.get(s3);
                int i;
                if(s2.equalsIgnoreCase(site.getName()))
                    i = site.getId();
            }
      

  4.   

    非常简单,你可以这么看它!Iterator iterator = sites.keySet().iterator();
    //可以猜测, sites是一个map吧, 类型是 Map<String, Site>while(iterator.hasNext()) {
      
             String s3 = (String)iterator.next(); //取得下一个key而已;
                Site site = (Site)sites.get(s3);  //然后用key取site
                int i;
                if(s2.equalsIgnoreCase(site.getName())) 比较site的name, 忽略大小写。
                    i = site.getId(); //取得ID
            }
      

  5.   

    这样理解吧,其实就是类似以下的循环写法
    for(int i=0;i<9;){
        i++;
    }
    iterator.next()取值的同时还后移了
      

  6.   

    wxg1008(嘻嘻哈哈) 
    解释的太好了谢谢了
      

  7.   

    这段代码倒容易理解,但是设计初衷真的让人怀疑,哈哈。
    for(Iterator iterator = sites.keySet().iterator(); iterator.hasNext();) {
      
             String s3 = (String)iterator.next();
                Site site = (Site)sites.get(s3);
                int i;
                if(s2.equalsIgnoreCase(site.getName())) {
                    i = site.getId();
                    break;//让他跳出去,再执行没有意义,set反正是无序的!!!
                }        }