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

来源:互联网 发布:金士顿u盘数据恢复 编辑:程序博客网 时间:2024/05/18 02:09


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 stubList<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 0
原创粉丝点击