什么是无限迭代器?为什么要使用它?
问题描述:
我想了解以下问题,我必须在作业中回答。它询问无限迭代器。他们会在哪里有用?我想迭代器被用来通过集合穿越,如:什么是无限迭代器?为什么要使用它?
Iterator itr = ArrayList.iterator();
while (itr.hasNext())
{
System.out.println(itr.next());
}
一旦itr
到达集合的末尾,它的完成,只要没有其他的操作都必须在迭代中完成的。那么为什么还要用无限迭代器呢?
答
一个无限的迭代器完全做你上面的代码,除了当它碰到结束元素时回退。
也许这个例子将有助于说明它会如何派上用场:
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
+0
一个很好的例子。 – AHungerArtist 2012-03-06 06:17:40
http://stackoverflow.com/questions/2622591/is -an-infinite-iterator-bad-design 这会回答你的问题。 – Nik 2012-03-06 06:07:13
啊,我不确定这里的“无限迭代器”的解释是什么。如果你需要迭代一个开放式范围,那么@NikunjChauhan是正确的。如果你的意思是一个集合的无限迭代器,比如Google Collection库,PHP和其他一些语言,那么请看下面! – 2012-03-06 06:19:10