一直没用过 增强for循环, 现在 我用用看,  但是我要判断是否有下一个元素存在,    目的是打印词组 , 没到最后一个的时候 中间打印逗号 ,  是最后一个元素的话 就不用打印逗号了 ,   请问怎么判断呢?
for(HotkeyBean hb:keyal ){
                  out.print(hb.getKeyword());
               }

解决方案 »

  1.   

    我一般这样
    String sp = "";
    for(HotkeyBean hb:keyal ){
      out.print(sp);
      out.print(hb.getKeyword());
      sp = ",";
      }
      

  2.   

    增强for循环,我晕,今天第一次听没发,不过可以根据hasNext来判断是否最后一条
      

  3.   

      
      恩 1楼的很巧妙,    这个循环方法本身没有 类似 hasnext这个方法的吧  
      

  4.   

    Java code
    String sp = "";
    for(HotkeyBean hb:keyal ){
    out.print(sp);
    out.print(hb.getKeyword());
    sp = ",";
    }貌似还是在最后一个后面加了个,额
    如果能得到keyal中hb的个数。那问题就解决了,我对HotkeyBean不熟
      

  5.   

    那就不要用 foreach 循环!for(int i = 0, k = keyal.size(); i < k; i++) {
        if(i > 0) {
            sb.append(',');
        }
        sb.append(keyal[i].getKeyword());
    }
      

  6.   

    楼主,到最后一个就不会print出来了
      

  7.   

                    StringBuffer sb = new StringBuffer();
    for (HotkeyBean hb : keyal) {
    sb.append("," + hb);
    }
    sb.substring(1);
     这样可以满足你的愿望
      

  8.   

    是个办法,不过,既然用了buffer,就sb.append(',').append(...)
      

  9.   

    其实你可以设置一个编号,每次增加1,如果这个编号等于keyal.length-1,集合类就是keyal.size(),那么就不加逗号,但是你发现没有,这样写真的还不如换个思路:
    1、每次循环都要判定。。
    2、这样写还不如直接用for(int i)下标呢,就不用自己再去多定义变量了用增强循环只是常规循环中比较简洁的写法。。好了,为什么不循环后将最后一个逗号去掉即可嘛,如有这样一个List:
    List <String>list = new ArrayList<String>();
    list.add("No1");
    list.add("No2");那么要得到通过逗号分隔拼接后的数据,就这样写呗:
    public static String getPingStr(List <String>list) {
      StringBuilder strBuf = new StringBuilder();
      if(list == null || strBuf.size() == 0) {//如果没有数据
        return "";
      }
      for(String str:list) {//拼接数据不要去判定,否则每次循环都要去判定
         strBuf.append(str).append(",");
      }
      return strBuf.deleteCharAt(strBuf.length()-1).toString();//将最后一个逗号去掉即可。
    }执行到下面后面肯定就有一个逗号,不晓得是不是你要要的东西。