设为首页收藏本站<<< 抵制 IE6 人人有责 >>>

鼎鼎新网

 找回密码
 立即注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

搜索
热搜: 活动乱码
查看: 130|回复: 20

java中for foreach while循环的比较 [复制链接]


[至尊红钻7级]发帖数量≥500篇 [至尊黄钻9级]威望≥2000点 [至尊蓝钻7级]在线时间≥200小时 [至尊绿钻9级]贡献度≥2000点 [至尊紫钻9级]金币≥2000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

  • TA的每日心情

    2012-4-20 23:13:18
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

     等级: Rank: 9Rank: 9Rank: 9
     级别: 管理员
     UID:  1   [未点亮普号显示]钻石不足100个
     威望:  990009
     钻石:  0
     发贴: 532 (0)
     金币: 99120114  
     同城币: 0   充值
     贡献:  99999
     积分: 101200663
     性别: I'm Boy
     阅读权限: 200
     在线时长: 264 小时
     注册:2011-8-22
     最后登录: 2012-5-20
    荣誉勋章
    灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老
    huangyoumin 实名认证  发表于 2011-9-4 18:50:37 |显示全部楼层 |          |
    在java中究竟是一般的for循环,还是for的增强型foreach,或是while的执行效率比较快呢,我用了一个简单的程序来分析3种循环
    public static void main(String[] args) {
    List<Integer> map = new ArrayList<Integer>();
    for (int i = 0; i < 100000; i++) {
    map.add(i);
    }

    long currTime = System.currentTimeMillis();
    //基本的for
    int z = map.size();
    // for (int i = 0; i < z; i++) {
    // int tmp = map.get(i);
    // System.out.println(tmp);
    // }
    //foreach
    // for (Integer integer : map) {
    // int tmp = integer;
    // System.out.println(tmp);
    // }
    //while
    // int i = 0 ;
    // while(i<z){
    // int tmp = map.get(i);
    // System.out.println(tmp);
    // i++;
    // }
    //
    // long time = System.currentTimeMillis() - currTime ;
    // System.out.println(time);
    //
    // }
    下面是3种循环得出的数据(时间单位为毫秒)
          for                   foreach                    while      
    第一组比较(4次)
          1313                  1329                       1219
          1266                  1063                       1156
          1078                  1109                       1125
          1297                  1047                       1266
    总时间
          4954                  4548                       4766
    第二组比较
          1219                  1125                       1109
          1172                  1062                       1188
          1313                  1109                       1125
          1125                  1296                       1125
    总时间
          4829                  4592                       4547
    第三组比较
          1265                  1078                       1125
          1062                  1062                       1094
          1328                  1109                       1094
          1329                  1235                       1125
    总时间
          4984                  4484                       4438
    从上面的数据我们可以看出foreach和while的效率几乎是差不多的,而for则相对较慢一些。
    这是不是代表着foreach可以替代掉for呢,显然不是foreach的内部原理其实还是 Iterator
    但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove();更不能使用下标来方便的访问元素.
    foreach这种循环一般只适合做数组的遍历,提取数据显示等,不适合用于增加删除和使用下标等复杂的操作.
    用一个最简单的程序来说明用foreach来进行赋值操作造成的错误.
    public class test {
    public static void main(String[] args)
         {
         User[] users = new User[2];
         users[0] = new User();
         users[1] = new User();
    //          for(int i=0; i<users.length; i++)
    //          {
    //              users[i] = new User();
    //          }
           for(User user:users)
           {
           user = new User();
           }
             
             System.out.println(users[0].name);
         }
    }
    class User
    {
         String name = "nick";     
    }
    第一种for循环可以正常的赋值,而第二种foreach就会报出空指针.
    for循环和while循环在使用上有一定的差异,但从实现的效果来看都是基本一样的。
    for循环再某些方面要更优一些如无限循环 while(true) for(;;)
    编译前              编译后
    while (1);        mov eax,1
                                                  test eax,eax
                                                  je foo+23h
                                                  jmp foo+18h
        编译前              编译后
        for (;;);          jmp foo+23h   
        从编译后的结果我们可以看出for的指令少,而且没有判断,显然更快.
    到底最好最差呢,其实都是相对的,根据不同的情况找到最优的解决才是最好的.


    http://ddxw.net/menhu/

    使用道具 举报

    
    [至尊红钻6级]发帖数量≥400篇 [至尊黄钻5级]威望≥300点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻8级]金币≥1000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  18.03%

    该用户从未签到

     等级: Rank: 3Rank: 3
     级别: 中级会员
     UID:  69   [未点亮普号显示]钻石不足100个
     威望:  314
     钻石:  0
     发贴: 428 (0)
     金币: 1486  
     同城币: 0   充值
     贡献:  0
     积分: 2541
     性别: I'm 火星人!
     阅读权限: 30
     在线时长: 0 小时
     注册:2011-10-26
     最后登录: 2012-5-17
    yasi2797 发表于 2011-10-28 07:19:20 |显示全部楼层
    自己知道了  

    使用道具 举报

    
    [至尊红钻6级]发帖数量≥400篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻9级]金币≥2000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  35.87%

  • TA的每日心情
    开心
    昨天 22:31
  • 签到天数: 26 天

    连续签到: 3 天

    [LV.4]偶尔看看III

     等级: Rank: 3Rank: 3
     级别: 中级会员
     UID:  81   [未点亮普号显示]钻石不足100个
     威望:  283
     钻石:  0
     发贴: 410 (0)
     金币: 2100  
     同城币: 0   充值
     贡献:  0
     积分: 3076
     性别: I'm 火星人!
     阅读权限: 30
     在线时长: 0 小时
     注册:2011-10-26
     最后登录: 2012-5-19
    走遍中国 发表于 2011-10-28 07:19:20 |显示全部楼层
    知道了 不错~~~  

    使用道具 举报

    
    [至尊红钻5级]发帖数量≥300篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻8级]金币≥1000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  27.77%

    该用户从未签到

     等级: Rank: 3Rank: 3
     级别: 中级会员
     UID:  33   [未点亮普号显示]钻石不足100个
     威望:  263
     钻石:  0
     发贴: 390 (0)
     金币: 1918  
     同城币: 0   充值
     贡献:  0
     积分: 2833
     性别: I'm 火星人!
     阅读权限: 30
     在线时长: 0 小时
     注册:2011-9-27
     最后登录: 2012-5-18
    睫毛上╰挂满忧 发表于 2011-10-28 07:19:20 |显示全部楼层
    观看中  

    使用道具 举报

    
    [至尊红钻3级]发帖数量≥100篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻8级]金币≥1000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

  • TA的每日心情
    无聊
    2011-9-4 00:20:12
  • 签到天数: 2 天

    连续签到: 0 天

    [LV.1]初来乍到

     等级: Rank: 8Rank: 8
     级别: 超级版主
     UID:  8   [未点亮普号显示]钻石不足100个
     威望:  0
     钻石:  0
     发贴: 178 (0)
     金币: 1499  
     同城币: 0   充值
     贡献:  0
     积分: 1667
     性别: I'm 火星人!
     阅读权限: 150
     在线时长: 1 小时
     注册:2011-8-28
     最后登录: 2011-11-6
    m225.com 发表于 2011-10-30 08:44:46 |显示全部楼层
    不错,看看。  

    使用道具 举报

    
    [至尊红钻6级]发帖数量≥400篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻8级]金币≥1000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  26.23%

    该用户从未签到

     等级: Rank: 3Rank: 3
     级别: 中级会员
     UID:  65   [未点亮普号显示]钻石不足100个
     威望:  291
     钻石:  0
     发贴: 418 (0)
     金币: 1788  
     同城币: 0   充值
     贡献:  0
     积分: 2787
     性别: I'm 火星人!
     阅读权限: 30
     在线时长: 0 小时
     注册:2011-10-26
     最后登录: 2012-5-19
    vv5oy30328 发表于 2011-10-30 08:44:46 |显示全部楼层
    非常感谢楼主,楼主万岁万岁万万岁!  

    使用道具 举报

    
    [至尊红钻3级]发帖数量≥100篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻8级]金币≥1000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

  • TA的每日心情
    无聊
    2011-9-4 00:20:12
  • 签到天数: 2 天

    连续签到: 0 天

    [LV.1]初来乍到

     等级: Rank: 8Rank: 8
     级别: 超级版主
     UID:  8   [未点亮普号显示]钻石不足100个
     威望:  0
     钻石:  0
     发贴: 178 (0)
     金币: 1499  
     同城币: 0   充值
     贡献:  0
     积分: 1667
     性别: I'm 火星人!
     阅读权限: 150
     在线时长: 1 小时
     注册:2011-8-28
     最后登录: 2011-11-6
    m225.com 发表于 2011-10-30 08:44:46 |显示全部楼层
    哈哈,看的人少,回一下  

    使用道具 举报

    
    [至尊红钻6级]发帖数量≥400篇 [至尊黄钻5级]威望≥300点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻8级]金币≥1000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  7.57%

    该用户从未签到

     等级: Rank: 3Rank: 3
     级别: 中级会员
     UID:  92   [未点亮普号显示]钻石不足100个
     威望:  333
     钻石:  0
     发贴: 418 (0)
     金币: 1144  
     同城币: 0   充值
     贡献:  0
     积分: 2227
     性别: I'm 火星人!
     阅读权限: 30
     在线时长: 0 小时
     注册:2011-10-29
     最后登录: 2012-5-20
    iypui047 发表于 2012-1-10 02:06:33 |显示全部楼层
    一楼的位置好啊..  

    使用道具 举报

    
    [至尊红钻6级]发帖数量≥400篇 [至尊黄钻5级]威望≥300点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻8级]金币≥1000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  14.27%

    该用户从未签到

     等级: Rank: 3Rank: 3
     级别: 中级会员
     UID:  77   [未点亮普号显示]钻石不足100个
     威望:  309
     钻石:  0
     发贴: 403 (0)
     金币: 1408  
     同城币: 0   充值
     贡献:  0
     积分: 2428
     性别: I'm 火星人!
     阅读权限: 30
     在线时长: 0 小时
     注册:2011-10-26
     最后登录: 2012-5-17
    k118g7836 发表于 2012-1-10 07:58:32 |显示全部楼层
    我也来顶一下..  

    使用道具 举报

    
    [至尊红钻4级]发帖数量≥200篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足10个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  13.73%

    该用户从未签到

     等级: Rank: 2
     级别: 注册会员
     UID:  398   [未点亮普号显示]钻石不足100个
     威望:  235
     钻石:  0
     发贴: 235 (0)
     金币: 2  
     同城币: 0   充值
     贡献:  0
     积分: 706
     性别: I'm 火星人!
     阅读权限: 20
     在线时长: 0 小时
     注册:2011-11-22
     最后登录: 2012-5-19
    maxine736 发表于 2012-1-10 07:58:32 |显示全部楼层
    我顶啊。接着顶  

    使用道具 举报

    
    [至尊红钻4级]发帖数量≥200篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻6级]金币≥500个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  62.4%

    该用户从未签到

     等级: Rank: 2
     级别: 注册会员
     UID:  117   [未点亮普号显示]钻石不足100个
     威望:  255
     钻石:  0
     发贴: 297 (0)
     金币: 630  
     同城币: 0   充值
     贡献:  0
     积分: 1436
     性别: I'm 火星人!
     阅读权限: 20
     在线时长: 0 小时
     注册:2011-11-2
     最后登录: 2012-5-18
    johbr010 发表于 2012-1-10 07:58:32 |显示全部楼层
    支持一下  

    使用道具 举报

    
    [至尊红钻4级]发帖数量≥200篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻6级]金币≥500个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  53.67%

    该用户从未签到

     等级: Rank: 2
     级别: 注册会员
     UID:  128   [未点亮普号显示]钻石不足100个
     威望:  255
     钻石:  0
     发贴: 288 (0)
     金币: 508  
     同城币: 0   充值
     贡献:  0
     积分: 1305
     性别: I'm 火星人!
     阅读权限: 20
     在线时长: 0 小时
     注册:2011-11-5
     最后登录: 2012-5-17
    zrjrp650 发表于 2012-2-1 15:31:34 |显示全部楼层
    ding   支持  

    使用道具 举报

    
    [至尊红钻6级]发帖数量≥400篇 [至尊黄钻5级]威望≥300点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻8级]金币≥1000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  14.23%

    该用户从未签到

     等级: Rank: 3Rank: 3
     级别: 中级会员
     UID:  49   [未点亮普号显示]钻石不足100个
     威望:  317
     钻石:  0
     发贴: 414 (0)
     金币: 1380  
     同城币: 0   充值
     贡献:  0
     积分: 2427
     性别: I'm 火星人!
     阅读权限: 30
     在线时长: 0 小时
     注册:2011-10-21
     最后登录: 2012-5-16
    福迟关秉 发表于 2012-2-1 15:31:34 |显示全部楼层
    顶也~  

    使用道具 举报

    
    [至尊红钻6级]发帖数量≥400篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻9级]金币≥2000个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  45%

  • TA的每日心情
    难过
    2011-11-10 19:36:59
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

     等级: Rank: 3Rank: 3
     级别: 中级会员
     UID:  23   [未点亮普号显示]钻石不足100个
     威望:  286
     钻石:  0
     发贴: 458 (0)
     金币: 2321  
     同城币: 0   充值
     贡献:  0
     积分: 3350
     性别: I'm Girl
     阅读权限: 30
     在线时长: 0 小时
     注册:2011-9-20
     最后登录: 2012-5-15
    Queen 发表于 2012-2-7 13:44:50 |显示全部楼层
    好人一个  

    使用道具 举报

    
    [至尊红钻4级]发帖数量≥200篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足10个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  18.53%

    该用户从未签到

     等级: Rank: 2
     级别: 注册会员
     UID:  178   [未点亮普号显示]钻石不足100个
     威望:  259
     钻石:  0
     发贴: 259 (0)
     金币: 2  
     同城币: 0   充值
     贡献:  0
     积分: 778
     性别: I'm 火星人!
     阅读权限: 20
     在线时长: 0 小时
     注册:2011-11-10
     最后登录: 2012-5-19
    chiyu59vv 发表于 2012-3-1 10:40:47 |显示全部楼层
    ding   支持  

    使用道具 举报

    
    [至尊红钻4级]发帖数量≥200篇 [至尊黄钻4级]威望≥100点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻4级]金币≥200个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  36.47%

    该用户从未签到

     等级: Rank: 2
     级别: 注册会员
     UID:  134   [未点亮普号显示]钻石不足100个
     威望:  268
     钻石:  0
     发贴: 290 (0)
     金币: 222  
     同城币: 0   充值
     贡献:  0
     积分: 1047
     性别: I'm 火星人!
     阅读权限: 20
     在线时长: 0 小时
     注册:2011-11-6
     最后登录: 2012-5-13
    beeu7668 发表于 2012-3-1 10:40:47 |显示全部楼层
    非常感谢楼主,楼主万岁万岁万万岁!  

    使用道具 举报

    
    [至尊红钻1级]发帖数量≥10篇 [至尊黄钻1级]威望≥10点 [未点亮至尊蓝钻]在线时间不足2小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻1级]金币≥10个 [未点亮至尊粉钻]精华贴数不足5贴 [未点亮至尊黑钻]同城币不足8个

    升级  11.4%

    该用户从未签到

     等级: Rank: 1
     级别: 新手上路
     UID:  550   [未点亮普号显示]钻石不足100个
     威望:  14
     钻石:  0
     发贴: 14 (0)
     金币: 16  
     同城币: 0   充值
     贡献:  0
     积分: 57
     性别: I'm 火星人!
     阅读权限: 10
     在线时长: 0 小时
     注册:2012-4-17
     最后登录: 2012-5-16
    fqtd7307 发表于 2012-4-21 02:53:01 |显示全部楼层
    说的真有道理啊!

    使用道具 举报

    主题浏览脚印 ( 共有 0 位会员浏览过该帖 )
    您需要登录后才可以回帖 登录 | 立即注册 人人连接登陆

    GMT+8, 2012-5-20 15:36 , Processed in 0.739016 second(s), 103 queries .

    Archiver|手机版|鼎鼎新网 ( 闽ICP备11017807号-1 )    鼎鼎新闻-ddxw.net腾讯QQ网页在线客服

    Powered by DDXW.NET! X2

    © 2001-2011 DDXW Inc. l=

    回顶部