Alb*_*ert 10 java iterator iterable copy
我认为这Iterator.copy()将是一个非常方便的功能.您可以以更好的方式实现迭代器过滤器.
例如,Googles Java Collection中filter(和类似的)函数使用的唯一原因UnmodifiableIterator(只是Iterator没有remove)是因为你不能实现这样的过滤器,Iterator否则无法在某些时候复制它.(真的,使用当前界面是不可能的;试试吧.)
另一个优点是你可以在for-each-loop中使用迭代器:因为可复制的迭代器也可以自动迭代.另见这个问题.目前,主要的设计理由不允许这样做是因为Iterator它实现Iterable并Iterator<T> iterator() { return this; }会使无效迭代器.通过使用一个copy函数,它就像它一样简单Iterator<T> iterator() { return copy(); }并且它不会使原始迭代器无效.因此,没有理由不允许这样做.
有什么缘故吗?只是为了减少实现它的复杂性?
ILM*_*tan 10
虽然它们通常是,但迭代器在理论上不必与集合相关联.例如,输入流上的复制方法很难实现,并且很容易导致模糊的内存问题.
An Iterator表示来自源的流中的位置(Iterable在java中说),并且不能保证可以复制甚至访问流的源.
例如,你可以在从网络服务器流式传输时迭代字节,在这种情况下,不可能告诉网络服务器中间流"从这个位置开始,我希望你给我两次相同的字节,但是我要求他们异步."
只有一个流,无法复制.
事实上Iterator你通常看到的大部分都是a Collection,这是偶然的.