什么是无限迭代器?为什么要使用它?
Posted
技术标签:
【中文标题】什么是无限迭代器?为什么要使用它?【英文标题】:What is an Infinite Iterator? Why use it? 【发布时间】:2012-03-23 15:15:57 【问题描述】:我正在尝试理解我在作业中必须回答的以下问题。它询问无限迭代器。它们在哪里有用?我认为迭代器用于遍历一个集合,例如:
Iterator itr = ArrayList.iterator();
while (itr.hasNext())
System.out.println(itr.next());
一旦itr
到达集合的末尾,它就完成了,只要在迭代中间不需要进行其他操作。那么为什么还要使用无限迭代器呢?
【问题讨论】:
***.com/questions/2622591/… 这回答了你的问题。 啊,我不确定这里指的是“无限迭代器”的哪种解释。如果情况是您需要遍历一个开放式范围,那么@NikunjChauhan 是正确的。如果您的意思是集合上的无限迭代器,例如在 Google 集合库、php 和一堆其他语言中,那么请参见下文! 【参考方案1】:无限迭代器的作用与您上面的代码完全一样,只是它在到达结束元素时回退。
也许这个例子将有助于说明它如何派上用场:
Let l = [1,2,3,4,5,6,7,8]
int i = 0;
InfiniteIterator itr = l.infiniteIterator();
while(itr.hasNext())
if(i % 2 == 0)
itr.remove();
i++;
每次迭代时l
的状态:
[1,2,3,4,5,6,7,8] # i = 0, e = 1
[2,3,4,5,6,7,8] # i = 1, e = 2
[2,3,4,5,6,7,8] # i = 2, e = 3
[2,4,5,6,7,8] # i = 3, e = 4
[2,4,5,6,7,8] # i = 4, e = 5
[2,4,6,7,8] # i = 5, e = 6
[2,4,6,7,8] # i = 6, e = 7
[2,4,6,8] # i = 7, e = 8
[2,4,6,8] # i = 8, e = 2
[4,6,8] # i = 9, e = 4
[4,6,8] # i = 10, e = 6
[4,8] # i = 11, e = 8
[4,8] # i = 12, e = 4
[8] # i = 13, e = 8
[8] # i = 14, e = 8
[] # while loop exits
【讨论】:
以上是关于什么是无限迭代器?为什么要使用它?的主要内容,如果未能解决你的问题,请参考以下文章