您的位置:首页 > 其它

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

2014-11-02 21:53 411 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  J2SE 循环