**************************************迭代(cbc为collection类型)********************************
for(Iterator<CoreBillBaseInfo> iter = cbc.iterator();iter.hasNext();){
if(SynInvBillFacadeControllerBean.exit){
logBuffer.append("用户请求退出...\r\n");
break;
}
CoreBillBaseInfo cbi = iter.next();
String billId = cbi.getDescription();//单据编号
Date bizDate = cbi.getBizDate();//业务日期
}
***************************************简单的for循环********************************************************
for(int i=0;i<cbc.size;i++){
             CoreBillBaseInfo cbi = cbc.getObject(i);
}

解决方案 »

  1.   

    如果只是遍历集合或数组 用for each 好些
    要修改,用for 
    其他真没什么不一样
      

  2.   

    为什么,我上面是collection类型,for each 应该针对list的吧
      

  3.   

    for(int i=0;i<cbc.size;i++){
                 CoreBillBaseInfo cbi = cbc.getObject(i);
    }
    这个可以用倒序的,或者cbc.size放在外面。这样会少执行csc.size的计算
      

  4.   

    对所有的集合用迭代遍历调用,比如用List,换成Collection 调用iterator都会返回Iterator,这是迭代模式,迭代器模式抽象了具体迭代器角色,使得客户程序更具一般性和重用性。不知道说的对不。
      

  5.   

    i<cbc.size把这个不要这样写,写成:int size = cbc.size;
    i<size
    否则,每次循环都要计算一次size,数据量大的话,百万级别的话,内存不堪重负的。
      

  6.   

    嗯,改过来了,多谢顺便问下,这种for循环和迭代器循环性能方面有什么不同
      

  7.   

    for(int i=0,len<list.size;i<len;i++){
       
    }
    这样写的效率最高!!
    至于为什么,可以google!
      

  8.   


    能用迭代器的 就能用for each
      

  9.   

    为什么,我的collection中是info对象(类似student,people的字段有15个左右)
      

  10.   


    记录的存取方式有两种:一种是顺序存储,另一种是链接存储
    对于顺序存储的记录可以根据其下标找到对应的记录,而链接存储(拿单链表为例)
    则必须找到其前一个记录的位置才能够找到本记录。所以for循环便于访问顺序存储的记录,比如数组等
    而迭代则更适用于链接存储的记录,虽然Java中有些底层通过链接存储原理实现的集合
    也可以通过下标获取指定的记录,但是其每次都必须从链表头开始查找记录,这样会影响查找的效率
      

  11.   


    这句话出处:http://zhidao.baidu.com/question/150123892.html
      

  12.   

    int java.util.ArrayList.size
    集合中一般有 size 属性吧.不用去计算的.直接就返回了,就是增加 了一次方法调用吧