Iterator Interface provides a remove() method but no add() method, Why ?
От: Аноним  
Дата: 14.10.13 05:15
Оценка:
С интервью

Iterator Interface provides a remove() method but no add() method, Why ?

Понятно что remove удаляет текущий элемент, но add же может добавить сразу после текущего,если он бы был?
Как бы вы ответили?
Re: Iterator Interface provides a remove() method but no add() method, Why ?
От: Blazkowicz Россия  
Дата: 14.10.13 06:48
Оценка:
Здравствуйте, Аноним, Вы писали:

А>С интервью

А>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 ?
От: avpavlov  
Дата: 14.10.13 07:05
Оценка:
B>Операция добавления более тривиальна. ... Почему добалвять нужно после текущего, а не перед ним?

Да и в этом виде выглядит не так тривиально. А если коллекция упорядоченная? А если коллекция не упорядоченная, а итератор — упорядочен? А если итератор вообще по субколлекции и новый элемент не попадает в эту субколлекцию по каким-то критериям?
Re[3]: Iterator Interface provides a remove() method but no add() method, Why ?
От: Blazkowicz Россия  
Дата: 14.10.13 07:14
Оценка: 1 (1)
Здравствуйте, avpavlov, Вы писали:

A>Да и в этом виде выглядит не так тривиально. А если коллекция упорядоченная? А если коллекция не упорядоченная, а итератор — упорядочен? А если итератор вообще по субколлекции и новый элемент не попадает в эту субколлекцию по каким-то критериям?

Да я не достаточно точно выразился. Операция добавляение в цикле тривиальна для разработчика. В то время как её реализация в итераторе — нет.
А с remove наборот.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.