有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:为什么迭代器不可复制

我认为Iterator.copy()将是一个非常方便的功能。您可以用更好的方式实现迭代器过滤器

例如,在Google Java集合中,filter(以及类似的)函数使用UnmodifiableIterator(这只是一个没有removeIterator)的唯一原因是,如果不在某个时刻复制它,就无法实现这样的过滤器Iterator。(真的,在当前的界面上是不可能的,你自己试试看。)

另一个优点是,您可以在for-each循环中使用迭代器:因为可复制迭代器也会自动成为可复制迭代器。另见this问题。现在,不允许这样做的主要设计原因是,实现IterableIterator<T> iterator() { return this; }Iterator将使迭代器无效。通过使用copy函数,它与Iterator<T> iterator() { return copy(); }一样简单,并且不会使原始迭代器无效。因此,没有理由再不允许这样做了

有什么原因吗?只是为了让实现变得不那么复杂


共 (0) 个答案