for 循环和 foreach 循环在遍历时的区别与联系

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 04:44   36   0


1、for循环和foreach循环的作用都可以遍历一个list,比如

for(int i = 0; i < list.size; i ++) {
    
}
for(int i = list.size(); i > 0; i --) {
    
}
for (Class c : list) {
}

2、但是,下面的情况下for ++ 和for -- 不能通用(在循环的基数改变的时候,例如下面的例子,每循环两次插入一个对象)

可以这样


for (int i = t.size(); i > 0; i --) {
 if(i % 2 == 0)
   t.add(new Test());
}

但是,不可以这样

for (int i = 0; i < t.size(); i ++) {
 if(i % 2 == 0)
   t.add(new Test());
}

这是因为,在add的过程中,t.size()的值是在不断改变的,所以这种基数改变的情况下只能用--


3、for 和 foreach的区别,时间复杂度的关系,foreach是在不断的new 对象出来,比如下面的

package demo_20141031;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Test {
 private String name = "";
 
 
// public String getName() {
//  return name;
// }
 public void setName(String name) {
  this.name = name;
 }
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  List<Test> t = new ArrayList<Test>();
  Test temp = new Test();
  String a = "12";
  //String b = "1";
  for (int i = 0; i < 10; i ++) {
   temp.setName(a);
   t.add(temp);
  }
  
  //System.out.println();
//  long time0 = new Date().getTime();
//  for (int i = 0; i < t.size(); i ++) {
//   
//  }
  long time1 = new Date().getTime();
  for (Test temps : t) {
   
  }
  long time2 = new Date().getTime();
//  System.out.println(time1 - time0);
  System.out.println(time2-time1);
 }
}




分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP