Я бы подумал, что Iterator.copy ()
будет весьма удобной функцией. Вы можете реализовать фильтры итератора в очень способ лучше.
Например, единственная причина в Googles Java Collection для filter
(и подобных) функций использовать UnmodifiableIterator
(который является просто Iterator
без remove
) потому, что вы не можете реализовать такой фильтр Iterator
иначе, не имея возможности скопировать его в какой-то момент. (На самом деле, это невозможно с текущим интерфейсом; попробуйте сами.)
Еще одним преимуществом было бы то, что вы могли бы использовать итератор в цикле for-each: потому что итератор с возможностью копирования автоматически также будет итеративным. См. Также этот вопрос. Прямо сейчас основная причина, по которой дизайн не разрешает это, заключается в том, что Iterator
, который реализует Iterable
и Iterator
сделает итератор недействительным. Имея функцию copy
, она так же проста, как Iterator
, и это не сделает исходный итератор недействительным. Таким образом, больше нет причин не допускать этого.
Есть ли причина? Чтобы упростить реализацию?