您的位置 首页 java

趁这疫情之际,温故一下Java中普通for与增强for的使用

Java 中普通for与增强for的使用,首先看看语法结构:

普通for循环语法:

for (int i = 0; i < integ.length; i++) {

System.out.println(interg[i]);

}

增强for循环语法:

for(Integer in : integ){

System.out.println(in);

}

趁这疫情之际,温故一下Java中普通for与增强for的使用


我们的知道在java8之前使用 :

for(Integer arr:array)

// TODO

在java8之后替代 :

array. foreach (obj -> System.out.println(obj ));


写一个小demo看看,使用怎么使用的:

public class Demo {

public static void main(String [] args) {
ArrayList< Integer > array = new ArrayList<Integer>();
array.add(1);
array.add(2);
array.add(5);
array.add(8);
Iterator <Integer> iterator = array.iterator();
System.out.println(“array.size():”+array.size());
//java8之后替代
array.forEach(obj -> System.out.println(“forEach->obj :”+obj ));

System.out.println(“array.size():”+array.size());
System.out.println(“array:”+array);
//java8之前使用
for(Integer arr:array){
//array.remove(1);
System.out.println(“arr:”+arr);
}
}
}

趁这疫情之际,温故一下Java中普通for与增强for的使用


普通for循环还是比foreach要快一点,测试一下,看看事实是否如此:

public class ForEachDemo {

public static void main(String[] args) {

List<Integer> arrayList = new ArrayList<Integer>();

List<Integer> linkList = new LinkedList<Integer>();

// 插入数据

for (int i = 0; i < 100000; i++) {

arrayList.add(i);

linkList.add(i);

}

int arry = 0;

// 遍历arrayList,用for循环arrayList

long forStartTime = System.currentTimeMillis();

for (int i = 0; i < arrayList.size(); i++) {

arry = arrayList.get(i);

}

long forEndTime = System.currentTimeMillis();

System.out.println(“for遍历需要:” + (forEndTime – forStartTime) + “毫秒”);

// 用增强for循环arrayList

long forUpStartTime = System.currentTimeMillis();

for (Integer in : arrayList) {

arry = in;

}

long forUpEndTime = System.currentTimeMillis();

System.out.println(“增强for遍历需要:” + (forUpEndTime – forUpStartTime) + “毫秒”);

System.out.println(“============linkList============”);

// 用for循环linkList

long linkForStartTime = System.currentTimeMillis();

int link = 0;

for (int i = 0; i < linkList.size(); i++) {

link = linkList.get(i);

}

long linkForEndTime = System.currentTimeMillis();

System.out.println(“for遍历:” + (linkForEndTime – linkForStartTime) + “毫秒”);

// 用增强for循环linkList

long linkForeachStartTime = System.currentTimeMillis();

for (Integer in : linkList) {

link = in;

}

long linkForeachEndTime = System.currentTimeMillis();

System.out.println(“用增强for遍历需要:” + (linkForeachEndTime – linkForeachStartTime) + “毫秒”);

}

}

run:

趁这疫情之际,温故一下Java中普通for与增强for的使用

可以看出,循环ArrayList时,普通for循环比foreach循环花费的时间要少一点;循环LinkList时,普通for循环比foreach循环花费的时间要多很多。当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要快一点;但是普通for循环在循环LinkList时,程序直接卡死。


怎么选择for:

需要循环数组结构的数据时,建议使用普通for循环,因为for循环采用下标访问,对于数组结构的数据来说,采用下标访问比较好。

需要循环链表结构的数据时,一定不要使用普通for循环,这种做法很糟糕,数据量大的时候有可能会导致系统崩溃。

文章来源:智云一二三科技

文章标题:趁这疫情之际,温故一下Java中普通for与增强for的使用

文章地址:https://www.zhihuclub.com/197339.shtml

关于作者: 智云科技

热门文章

网站地图