Здравствуйте, Аноним, Вы писали:
А>С интервью А>Iterator Interface provides a remove() method but no add() method, Why ? А>Понятно что remove удаляет текущий элемент, но add же может добавить сразу после текущего,если он бы был? А>Как бы вы ответили?
Операция remove в цикле не тривиальна. Например чтобы удалять в цикле из списка по индексу, нужно итерироваться с конца. Чтобы каждый раз не изобретать подобный код, он уже реализован в итераторе.
Операция добавления более тривиальна. Какого-то частого сценария где бы нужно было добавлять после текущего, я не припомню.
Кроме этого не очень понятно какой бы подход был наиболее правильным. Почему добалвять нужно после текущего, а не перед ним? Если добавлять после, то нужно ли в следующей итерации его обрабатывать?
Re[2]: Iterator Interface provides a remove() method but no add() method, Why ?
B>Операция добавления более тривиальна. ... Почему добалвять нужно после текущего, а не перед ним?
Да и в этом виде выглядит не так тривиально. А если коллекция упорядоченная? А если коллекция не упорядоченная, а итератор — упорядочен? А если итератор вообще по субколлекции и новый элемент не попадает в эту субколлекцию по каким-то критериям?
Re[3]: Iterator Interface provides a remove() method but no add() method, Why ?
Здравствуйте, avpavlov, Вы писали:
A>Да и в этом виде выглядит не так тривиально. А если коллекция упорядоченная? А если коллекция не упорядоченная, а итератор — упорядочен? А если итератор вообще по субколлекции и новый элемент не попадает в эту субколлекцию по каким-то критериям?
Да я не достаточно точно выразился. Операция добавляение в цикле тривиальна для разработчика. В то время как её реализация в итераторе — нет.
А с remove наборот.