1.手先增强for循环和iterator遍历的效果是一样的,也就说
增强for循环的内部也就是调用iteratoer实现的,但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
3.而对于 LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用 增强for循环,也就是iterator。
对于ArrayList,Vector其核心是一个数组,如果明确知道List的实例是ArrayList,Vector,当然用for(inti=0;i<lst.size();i++){}这种方式是最快的.当然用Iterator的话,其实是相关无几,Iterator基本上都是指针操作,Iterator本身的处理会增加一点点的开销,跟踪一下源码就可以知道.
Iterator好处:通用,对于所有集合,使用Iterator性能都一样,客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。
客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。
for(i=0;...)方法有一个缺点:如果List的实例是LinkedList等非"数组"存储方式的时候,遍历集合的开销会差别很大!就以LinkedList来说,以下是get(i)方法来取元素的主要代码,我们可以看到,LinkedList内的get(i)方法,用了循环方式来返回元素,性能肯定会差.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
if (index< 0 ||index>=size)
throw new IndexOutOfBoundsException( "Index:" +index+
",Size:" +size);
Entry<E>e=header;
if (index<(size>> 1 )){
for ( int i= 0 ;i<=index;i++)
e=e.next;
} else {
for ( int i=size;i>index;i--)
e=e.previous;
}
return e;
|
分享到:
相关推荐
一段在java中使用的循环遍历集合中存储值的代码,给大家分享一下。
计算机后端-Java-Java核心基础-第24章 集合01 10. Iterator遍历集合的两种错误写法.avi
该文档代码讲述了如何在jsp页面iterator遍历数组、Map、List集合
Iterator遍历中 ConcurrentModificationException异常
jsp自定义标签iterator遍历list[整理].pdf
Iterator接口在集合中的使用方法!
计算机后端-Java-Java核心基础-第24章 集合01 08. 使用Iterator遍历Collection.avi
Enumeration和Iterator接口功能相似,而且Iterator的功能还比Enumeration多,那么为什么还要使用Enumeration
1. 遍历List 2. 遍历List<List<String>> 3. 遍历UserEntity 4. 遍历List 遍历方法各有长短,若不是多表联接查询、显示表格的列数已经固定,一般用实体类(UserEntity)迭代的方式。相反,显示的数据表格行和列不确定...
主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
for,foreach,iterator的用法和区别
主要介绍了java使用iterator遍历指定目录示例,需要的朋友可以参考下
js代码-Iterator遍历对象
主要介绍了JSP中c:foreach遍历和s:iterator遍历异同,以两个完整实例形式对比分析了c:foreach遍历和s:iterator遍历的具体用法,具有一定参考借鉴价值,需要的朋友可以参考下
主要介绍了Java使用Iterator迭代器遍历集合数据的方法,结合实例形式分析了java迭代器进行集合数据遍历的常见操作技巧,需要的朋友可以参考下
其实只有一点struts2 iterator标签遍历二维数组
用安装$ npm i iterator-streams --save用法var iterator = require ( 'iterator-streams' ) ;原料药循环遍历一堆流,将每个steram的结果传递到堆栈中的下一个流。 参量stack {Array} :要使用的流的数组。 returns...
本文实例讲述了ES6中Iterator与for..of..遍历用法。分享给大家供大家参考,具体如下: Iterator与for..of..遍历 1.Iterator概念 遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。JS中有些...
本文实例讲述了ES6 Iterator接口和for…of循环用法。分享给大家供大家参考,具体如下: [removed] // 数组已经帮我们内置这个Iterator接口 let arr = ['hello','world']; let map = arr[Symbol.iterator](); // ...