package com.njwbhz.March.week1.part0301;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
public class TestTraverseTime {
public static void main(String[] args) {
//创建一个存储了100W个数据的数组
List list = new ArrayList();
for (long i = 0 ; i < 1000000 ; i++) {
list.add(i + 10);
}
//普通的for循环遍历
long method1StartTime , method1EndTime , method1Time;
//开始计时
method1StartTime = System.currentTimeMillis();
//开始遍历
for (int i = 0 ; i < list.size() ; i ++) {
System.out.print(list.get(i));
}
//结束计时
method1EndTime = System.currentTimeMillis();
method1Time = method1EndTime - method1StartTime;
// System.out.println(method1Time);
//增强for循环遍历
long method2StartTime , method2EndTime , method2Time;
//开始计时
method2StartTime = System.currentTimeMillis();
//开始遍历
for (Object data : list) {
System.out.print(data);
}
//结束计时
method2EndTime = System.currentTimeMillis();
method2Time = method2EndTime - method2StartTime;
// System.out.println(method2Time);
//使用迭代器进行遍历
long method3StartTime , method3EndTime , method3Time;
//创建迭代器的对象
Iterator iterator = list.iterator();
//开始计时
method3StartTime = System.currentTimeMillis();
//开始遍历
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
//结束计时
method3EndTime = System.currentTimeMillis();
method3Time = method3EndTime - method3StartTime;
// System.out.println(method3Time);
//创建匿名内部类进行遍历
long method4StartTime , method4EndTime , method4Time;
Consumer consumer = new Consumer() {
@Override
public void accept(Object o) {
System.out.print(o + "\t");
}
};
//开始计时
method4StartTime = System.currentTimeMillis();
//开始遍历
list.forEach(consumer);
//结束计时
method4EndTime = System.currentTimeMillis();
method4Time = method4EndTime - method4StartTime;
// System.out.println(method4Time);
//使用lambda表达式进行遍历
long method5StartTime , method5EndTime , method5Time;
//开始计时
method5StartTime = System.currentTimeMillis();
//开始遍历
list.forEach((o) -> System.out.print(o));
//结束计时
method5EndTime = System.currentTimeMillis();
method5Time = method5EndTime - method5StartTime;
// System.out.println(method5Time);
//使用方法引用进行遍历
long method6StartTime , method6EndTime , method6Time;
//开始计时
method6StartTime = System.currentTimeMillis();
//开始遍历
list.forEach(System.out::print);
//结束计时
method6EndTime = System.currentTimeMillis();
method6Time = method6EndTime - method6StartTime;
// System.out.println(method6Time);
System.out.println("普通的for循环遍历用时为:" + method1Time/1000 + "s" + "(" + method1Time + "ms" + ")");
System.out.println("增强的for循环遍历用时为:" + method2Time/1000 + "s" + "(" + method2Time + "ms" + ")");
System.out.println("迭代器进行的遍历用时为:" + method3Time/1000 + "s" + "(" + method3Time + "ms" + ")");
System.out.println("创建匿名内部类进行的遍历用时为:" + method4Time/1000 + "s" + "(" + method4Time + "ms" + ")");
System.out.println("使用lambda表达式进行的遍历用时为:" + method5Time/1000 + "s" + "(" + method5Time + "ms" + ")");
System.out.println("方法引用进行的遍历用时为:" + method6Time/1000 + "s" + "(" + method6Time + "ms" + ")");
}
}