社区
Java SE
帖子详情
Java循环问题
无尘45f
2007-08-07 02:31:53
请问一下 遍历ArrayList的时候
for循环和Iterator有什么区别
可否详细点
...全文
310
9
打赏
收藏
Java循环问题
请问一下 遍历ArrayList的时候 for循环和Iterator有什么区别 可否详细点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liming1983
2007-09-04
打赏
举报
回复
针对不同的数据集,由于其实现方式的不同,可能造成在根据索引查找数据时在性能上造成很重大的差异。如基于数组索引的ArrayList和基于链表的LinkedList。同是List,但是在类似get(0)这样的操作上的性能差异是非常大的。LinkedList会慢很多。
而迭代器则是为解决这个问题而产生的,它提供了一种通用的最简单和相对优化的方式遍历数据集。对于ArrayList,迭代器会用其效率高的根据索引取值,而针对LinkedList,则会直接取当前对象的下一个链接对象。
所以,其实针对ArrayList,用for是相对更快的。但是Iterator则更加通用。
bit1010
2007-09-03
打赏
举报
回复
当然有区别,使用Iterator其实是在使用迭代器模式。
在你现在的这个例子中,可以实际的获取到你的集合数据结构,但是如果你写了一个方法供别人
比如 List getAList() {
list.add("a");
list.add("b");
return list;//假如list是实例变量。
}
这样的话,别人再获得list对象后,可以再add内容,这样就会影响到你的list。
因此,上面的方法需要改为:
List getAList() {
list.add("a");
list.add("b");
return list.clone();//假如list是实例变量。
}
上面的方法有如下问题:
(1)使用clone,clone是一个费时的操作,并且往往容易出错。
(2)向你的API使用者提供了你的内部实现,如果以后你要把List改为Set,你对你的用户来说,你的API是失败的,别说增加一个方法getASet.
这时候,就可以把方法写成:
Iterator getAIterator() {
list.add("a");
list.add("b");
return list.iterator;//假如list是实例变量。
}
火龙果被占用了
2007-09-03
打赏
举报
回复
使用 foreach 循环就更好了,既清楚,又好理解。
IT码农人
2007-09-03
打赏
举报
回复
public static int mytst(Collection c)
{
Iterator itr = c.iterator();
while(itr.hasNext())
{
...
}
for(Iterator itr1 = c.iterator(); itr.hasNext(); )
{
...
}
}
两者没有本质区别
free510
2007-09-02
打赏
举报
回复
用迭代器你可以不用知道arraylist中的结构,隐藏了一些东西
zdjray
2007-08-08
打赏
举报
回复
个人理解就是for从里面来看,iterator 从外面来看
iterator可以不用关心里面是怎么得到下一个的,可以很复杂
但是iterator一般用链表实现,可能性能相对低一点点
无尘45f
2007-08-07
打赏
举报
回复
但是在公司,比较有经验的都说尽量用迭代器,不知道什么原因
chenyifei211
2007-08-07
打赏
举报
回复
另外Iterator即迭代器,可以实现不经重写就能同各种容器一同工作,能让客户程序员在不知道,不关心他所处理的是什么样的底层序列结构情况下就能在一个对象序列中前后移动,选取其中对象也就是说无论是arraylist或别的,使用Iterator的情况下不用去关心
chenyifei211
2007-08-07
打赏
举报
回复
遍历的话这两种方式应该都可以,区别的话应该也没有什么吧,我感觉效率应该也是差不多的吧
最新
JAVA
编程题全集 50题及答案
* 在
JAVA
中,可以使用递归函数或
循环
来实现菲波拉契数列的计算。 * 本程序使用
循环
来计算菲波拉契数列,并打印出每个月的兔子对数。 知识点: * 菲波拉契数列的定义和性质 * 递归函数和
循环
的应用 *
JAVA
中的...
JAVA
经典算法90题【含源码】
最后,"50道
JAVA
基础编程练习题.doc"可能包含了更多基础编程训练,包括控制流(条件语句、
循环
语句)、异常处理、多线程、集合框架的使用等。这些题目旨在巩固
Java
语言的基础,确保开发者能够编写出高效、可读性强的...
java
基础教程----精华版
- **流程控制**:如if语句、switch语句、for
循环
、while
循环
等,控制程序执行的流程。 2. **类与对象**: - **类(Class)**:
Java
中的核心概念,是对象的模板,定义了对象的属性(成员变量)和行为(方法)。 -...
java
for 死
循环
_简单的
java
死
循环
java
中的死
循环
问题
java
中死
循环
是什么意思
循环
一次不再
循环
是死
循环
java
中死
循环
是什么意思
循环
一次不再
循环
是死
循环
还是不断
循环
才是死
JAVA
中死
循环
的意思是,不停地
循环
,不会终止,例如: for (int i = 0; i >= 0; i++) { ...
Java
循环
打印999,
Java
循环
1、目标一、掌握
循环
类型二、掌握
循环
案例
java
2、知识点一、
循环
做用:用于重复执行相同代码的一种执行过程,在该过程当中经过执行的条件控制须要重复执行的代码。code种类:一、有效
循环
--> 有次数的
循环
二、死...
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章