list遍历方式效率分析
来源:互联网 发布:mac磁盘映像怎么删除 编辑:程序博客网 时间:2024/06/18 06:31
package list;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class ListTest { public static void main(String[] args) { List<Object> list=new ArrayList<>(); //List<Object> list=new LinkedList<>(); long begin,end; Object temp; begin=System.currentTimeMillis(); for (int i = 0; i < 10000000; i++) { list.add("第"+i+"个元素"); } end=System.currentTimeMillis(); System.out.println("创建list耗时:"+(end-begin)+"ms"); System.out.println("---------------------"); /** * foreach 方式 */ begin=System.currentTimeMillis(); for (Object object : list) { temp=object; } end=System.currentTimeMillis(); System.out.println("foreach耗时:"+(end-begin)+"ms"); System.out.println("---------------------"); /** * 迭代器方式 */ begin=System.currentTimeMillis(); Iterator<Object> iterator=list.iterator(); while (iterator.hasNext()) { temp=iterator.next(); } end=System.currentTimeMillis(); System.out.println("iterator耗时:"+(end-begin)+"ms"); System.out.println("---------------------"); /** * 普通for循环 */ begin=System.currentTimeMillis(); for (int i = 0; i <list.size(); i++) { temp=list.get(i); } end=System.currentTimeMillis(); System.out.println("for耗时:"+(end-begin)+"ms"); System.out.println("---------------------"); }}
添加10000000条测试数据,测试结果:
第一次运行:创建list耗时:12767ms---------------------foreach耗时:30ms---------------------iterator耗时:27ms---------------------for耗时:7ms---------------------第二次运行:创建list耗时:7959ms---------------------foreach耗时:28ms---------------------iterator耗时:26ms---------------------for耗时:7ms---------------------
多次运行后,结果差别不大,foreach和iterator效率差不多,普通for循环效率最高。编译过程中,编译器将foreach循环体作为迭代器处理,二者完全等价,不过在foreach循环中,有一步不必要的赋值,导致效率比迭代器差一点,而for循环中,通过随机访问遍历列表,arraylist是基于数组实现的,所以随机访问的速度非常快,因此效率也非常高。所以遍历arraylist时,优先考虑for循环。
0 0
- list遍历方式效率分析
- List三种遍历方式及效率问题
- List遍历效率
- list遍历方法及效率
- List的遍历方式
- Java - list 遍历方式
- PHP遍历数组效率分析
- Java List遍历方法 及其效率对比
- Java List遍历方法 及其效率对比
- Java List遍历方法 及其效率对比
- List集合两种遍历效率问题
- java List遍历方法及效率对比
- Java List遍历方法 及其效率对比
- List遍历 三种方式
- List、Set集合遍历方式
- List、Set集合遍历方式
- List、Set集合遍历方式
- List、Set集合遍历方式
- JavaScript内置对象
- 如何用java实现不同编码方式字符串的转换(包含异常处理、重复不终止输入、缓冲区bufferedreader的使用)
- Angular4.0.0正式版发布
- python1-3月25日
- Java中HashMap源码浅析
- list遍历方式效率分析
- RecyclerView系列之(1):为RecyclerView添加Header和Footer
- 算法的时间和空间复杂度
- 详解js中的apply与call的用法
- hdu 2047 EOF 串
- 递归递推练习 N
- python2-3月26日
- maven项目构建index.jsp报错
- 如何更高效的对首页数据的展示