Java:为什么迭代器不可复制
我认为Iterator.copy()
将是一个非常方便的功能。您可以用更好的方式实现迭代器过滤器
例如,在Google Java集合中,filter
(以及类似的)函数使用UnmodifiableIterator
(这只是一个没有remove
的Iterator
)的唯一原因是,如果不在某个时刻复制它,就无法实现这样的过滤器Iterator
。(真的,在当前的界面上是不可能的,你自己试试看。)
另一个优点是,您可以在for-each循环中使用迭代器:因为可复制迭代器也会自动成为可复制迭代器。另见this问题。现在,不允许这样做的主要设计原因是,实现Iterable
和Iterator<T> iterator() { return this; }
的Iterator
将使迭代器无效。通过使用copy
函数,它与Iterator<T> iterator() { return copy(); }
一样简单,并且不会使原始迭代器无效。因此,没有理由再不允许这样做了
有什么原因吗?只是为了让实现变得不那么复杂
共 (0) 个答案