for 循環和 foreach 循環在遍歷時的區別與聯繫


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);
	}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章