JAVA iterator 迭代器模式的next() 的问题 求高手回答 谢谢! 真诚求学 在线等。

我看书的时候书上说了两种方法去实现next()第一个是数列,第二个是link。但是我对书上说的有质疑。它在第一种方法返回的是returnlist[current-1](它... 我看书的时候书上说了两种方法去实现 next() 第一个是数列,第二个是link。
但是我对书上说的有质疑。 它在第一种方法返回的是 return list[current-1] (它注解上说的是"@return iteration的下一个元素",但是current++ 后的current-1不是下一个元素啊!!!,而是原来的current吧。举个例子: 比如说原来是current[4], 4++=5,现在又返回回current[4]罢了,理应返回的是current[5]才对呀! )

第二种方法里存在同一个问题,返回的都不是下一个元素,但注解说是下一个。请大侠细看,谢谢!
展开
 我来答
armslave88
2015-01-25 · TA获得超过416个赞
知道小有建树答主
回答量:535
采纳率:100%
帮助的人:461万
展开全部
关于你的疑问,请参考我的学习笔记吧。
hasNext、next方法:迭代器用于遍历集合元素。获取迭代器可以使用Collection定义的方法:Iterator iterator()
迭代器Iterator 本身是一个接口,集合在重写Collection的iterator()方法时利用内部类提供了迭代器的实现。Iterator提供了统一的遍历集合元素的方式,其提供了用于遍历集合的两个方法:boolean hasNext()判断集合是否还有元素可以遍历。
E next() 返回迭代的下一个元素。
每一种集合的实现类都是各自的迭代器实现,不用关心具体迭代器的类型,只将他们当作迭代器用于遍历集合元素即可。应当遵循“问-取-删”模式,适用于while循环。
Iterator<String>it = c1.iterator(); --- 问的过程,询问c1集合中是否还有元素
while( it.hasNext() )
{
String str = (String) it.next(); --- 取出来的是Object类型,所以需要转换类型
}
注意:应建立在hasNext返回true的基础上执行next()方法
迭代过程中,不能调用集合的相关方法来改变集合中的元素,不然会抛出异常。应使用迭代器自身提供的方法操作。迭代器的删除方法是在原集合中删除元素。在调用remove方法前必须通过迭代器的next()方法迭代过元素,那么删除的就是这个元素,并且不能连续接着调用remove。
While( it.hasNext() )
{
String str = (String) it.next();
if(“#”.equals ( str ) )
{ //凡是相互比较,应当让字变量.equals(变量),可以避免遇到null空指针异常
it.remove();
}
}
更多追问追答
追问
你没有回答我的问题。。你回答的东西都是与我问题无关的。。。。
追答
你没有真正的理解迭代器,你这种自学方式属于钻牛角尖,去研究一些不需要清楚的问题,知道怎么用迭代器就行了,人家老外写的源代码你死命去分析有用吗?迭代器提供给你两个方法,
hasNext next 任何集合都可以拿过来用,实际工作中也是这么用的,你非研究为什么是list有意义吗?
还有人家老外给你写了英文备注,你不会看啊。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式