for 循环和 foreach 循环在遍历时的区别与联系
2014-11-02 21:53
411 查看
1、for循环和foreach循环的作用都可以遍历一个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);
}
}
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);
}
}
相关文章推荐
- Java中foreach和for在循环遍历数组、集合方面的区别
- 浅析PHP中for与foreach两个循环结构遍历数组的区别
- php循环语句 for()与foreach()用法区别介绍
- iterator 遍历与for循环与foreach的优劣对比
- Java中 for和foreach循环的区别
- 深入 foreach 和 for 循环的区别
- js中使用for 循环和 for in 遍历数组区别
- 【JAVA】for,foreach遍历数组时候一些区别
- for循环和foreach循环的区别?
- 循环遍历总结(for/foreach/forin/forof/map/some/filter)
- for ,foreach ,map 循环的区别
- 深入 foreach 和 for 循环的区别
- for与foreach遍历二维数组的语法区别
- js中的循环遍历数组中的元素,ES6(for-of)、ES5(forEach、for-in)、通用(for(i=0;i<length;i++))
- 对于集合的遍历操作,可以使用 itrator foreach for 循环,下面比较一下各自的优缺点
- for循环与foreach的区别
- php循环语句 for()与foreach()用法区别介绍
- for(){}与iterator()遍历循环的区别
- For 循环 和Foreach 的区别
- foreach语句和传统的for循环语句区别