Java: почему итераторы не копируются

Я бы подумал, что Iterator.copy () будет весьма удобной функцией. Вы можете реализовать фильтры итератора в очень способ лучше.

Например, единственная причина в Googles Java Collection для filter (и подобных) функций использовать UnmodifiableIterator (который является просто Iterator без remove ) потому, что вы не можете реализовать такой фильтр Iterator иначе, не имея возможности скопировать его в какой-то момент. (На самом деле, это невозможно с текущим интерфейсом; попробуйте сами.)

Еще одним преимуществом было бы то, что вы могли бы использовать итератор в цикле for-each: потому что итератор с возможностью копирования автоматически также будет итеративным. См. Также этот вопрос. Прямо сейчас основная причина, по которой дизайн не разрешает это, заключается в том, что Iterator , который реализует Iterable и Iterator iterator () {return this; } сделает итератор недействительным. Имея функцию copy , она так же проста, как Iterator iterator () {return copy (); } , и это не сделает исходный итератор недействительным. Таким образом, больше нет причин не допускать этого.

Есть ли причина? Чтобы упростить реализацию?

10
задан Community 23 May 2017 в 10:28
поделиться