时间:2021-05-19
在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因。目前有三种迭代方法:for循环、迭代器和Foreach。前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一起比较。下面我们就三种方法的概念进行理解,然后ArrayList中探索三种方法的效率。
for循环:是支持迭代的一种通用结构,是最有效,最灵活的循环结构
迭代器:是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的
Foreach:通过阅读源码我们还发现一个Iterable接口。它包含了一个产生Iterator对象的iterator()方法,而且将Iterator对象被foreach用来在序列中移动。对于任何实现Iterable接口的对象都可以使用。
ArrayList中的效率对比:
List<Integer> integers = Lists.newArrayList(); for(int i=0;i<100000;i++){ integers.add(i); } long start1 = System.currentTimeMillis(); for(int count =0 ;count<10;count++){ for(int i=0;i<integers.size();i++){ int j=integers.get(i); } } System.out.println(String.format("for循环100次时间:%s ms",System.currentTimeMillis()-start1)); long start2 = System.currentTimeMillis(); for(int count =0 ;count<10;count++) { for (Integer i : integers) { int j = i; } } System.out.println(String.format("foreach循环100次时间:%s ms",System.currentTimeMillis()-start2)); long start3 = System.currentTimeMillis(); for(int count =0 ;count<10;count++) { Iterator<Integer> iterator = integers.iterator(); while(iterator.hasNext()){ int j=iterator.next(); } } System.out.println(String.format("迭代器循环100次时间:%s ms",System.currentTimeMillis()-start3));结果:
for循环100次时间:15 ms
foreach循环100次时间:25 ms
迭代器循环100次时间:20 ms
知识点扩展:
增强for循环:foreach
在Java 5.0提供了一种新的迭代访问 Collection和数组的方法,就是foreach循环。使用foreach循环执行遍历操作不需获取Collection或数组的长度,也不需要使用索引访问元素。
到此这篇关于java迭代器和for循环优劣详解的文章就介绍到这了,更多相关分析java迭代器和for循环优劣内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Python通过for循环理解迭代器和生成器。分享给大家供大家参考,具体如下:迭代器可迭代对象通过for…in…循环依次拿到数据进行使用的过程称为
ES6新的数组方法、集合、for-of循环、展开运算符(...)甚至异步编程都依赖于迭代器(Iterator)实现。本文会详解ES6的迭代器与生成器,并进一步挖
JavaIterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代ArrayList和HashSet等集合。Iterator是Java迭代器
for循环语句的对象是可迭代对象,可迭代对象需要实现__iter__或iter方法,并返回一个迭代器,什么是迭代器呢?迭代器只需要实现__next__或next
迭代器(Iterable):能直接作用于for循环的对象,统称可迭代对象。例如:list、tuple、set、str、generator都是可迭代对象。1、如何