List和LinkedList的遍历速度对比
一、List的遍历速度测试
1.测试结果与分析
- 普通for循环遍历:(200000轮)558ms
- 迭代器遍历:(200000轮)512ms
- 增强for循环遍历:(200000轮)505ms
根据以上测试数据,可知三者遍历速度相差不多
2.测试代码
package com.atguigu.test2;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* ClassName: TestForeachTime
* Description:
*
* @Author Ethan-TYQ
* @Create 2023/8/16 20:03
* @Version 1.0
*/
public class TestForeachTime {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 200000; i++) {
list.add(i);
}
long begin = System.currentTimeMillis();
//方法1:普通for循环遍历
// for (int i = 0; i < list.size(); i++){
// System.out.println(list.get(i));
// }
//方法2:迭代器遍历
// Iterator<Integer> iterator = list.iterator();
//输入要定义作为变量的值 + 。var 可以快捷书写
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
//方法3:增强for循环遍历
// for(int i : list){
// System.out.println(list.get(i));
// }
long end = System.currentTimeMillis();
System.out.println("总的用时:" + (end - begin));//(1)558ms (2)512ms (3)505ms
}
}
二、LinkedList的遍历速度
1.测试结果与分析
- 普通for循环遍历:(200000轮循环)14779ms
- 迭代器遍历:(200000轮)512ms
- 增强for循环遍历:(200000轮)505ms
根据以上测试数据,可知三者遍历速度中,普通循环最慢,其他两者相差不多
package com.atguigu.test4;
import java.util.Iterator;
import java.util.LinkedList;
/**
* ClassName: TestForeachTime
* Description:
*
* @Author Ethan-TYQ
* @Create 2023/8/16 18:37
* @Version 1.0
*/
public class TestForeachTime {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<Integer>();
for (int i = 0; i < 200000; i++) {
list.add(i);
}
long begin = System.currentTimeMillis();//计量单位为毫秒,1s = 10的三次方 = 1000ms
// long startime = System.nanoTime();//计量单位为纳秒,1s = 10的9次方 = 1000000000ns
// //1.普通for循环
// for (int i = 0; i < list.size(); i++) {
// System.out.println(list.get(i));
// }
// 2.迭代器遍历
// Iterator<Integer> iterator = list.iterator();
// while(iterator.hasNext()){
// System.out.println(iterator.next());
// }
// System.out.println("----------------------------------------------");
// 方式3:增强for循环遍历 底层实现还是迭代器 是JDK1.5新增的内容 属于对迭代书写格式的简化
for(Integer i : list){
System.out.println("i = " + i);
}
long end = System.currentTimeMillis();
// long endtime = System.nanoTime();
System.out.println(end - begin);//方法1.普通for循环:(200000轮循环)14779ms
//方式2.迭代器遍历:(200000轮循环)560ms
//方式3.增强for循环:(200000轮循环)638ms
// System.out.println(endtime - startime);//200000轮循环:14779291500ns
}
}
三、两种新遍历
两种新遍历为:迭代器遍历、增强for循环遍历
1.迭代器遍历
迭代器主要用于迭代访问(遍历)Collection中的元素
//创建迭代器对象
Iterator<Integer> iterator = list.iterator();
//判断迭代器指向的下一个元素是否存在,存在则输出下一个迭代器元素
while (iterator.hasNext()){
System.out.println(iterator.next());
}
参考:https://blog.csdn.net/rbx508780/article/details/126980386
2.增强for循环遍历
//以下为for循环遍历的核心内容
for(ElementType element: arrayName)
{ //集合或数组的数据类型 变量名:集合名/数组名
System.out.println(变量名);
};
参考:https://blog.csdn.net/qq_48374573/article/details/117199933