Реализация итератора для неизменяемого списка

#java #list #iterator

#java #Список #итератор

Вопрос:

Я реализую неизменяемый список на основе AbstractSequentialList . Теперь, согласно документации Oracle:

Для неизменяемого списка программисту нужно только реализовать методы hasNext, next, hasPrevious, previous и index итератора списка.

Проблема в том, что, похоже, я должен предоставить реализацию для методов remove, set и add, хотя они вообще не нужны из-за неизменяемого характера списка, в противном случае компилятор жалуется, потому что эти методы не реализованы.

Итак, я делаю что-то не так или это реальный путь? должен ли я реализовывать такие методы и создавать в них какое-то исключение или около того?

Заранее большое спасибо,

Ответ №1:

Просто добавьте UnsupportedOperationException методы, которые вам не нужно реализовывать. Как указано Iterator ListIterator в документации / interface https://docs.oracle.com/javase/7/docs/api/java/util/ListIterator.html#remove ()

Выдает: исключение UnsupportedOperationException — если операция удаления не поддерживается этим итератором списка

например

 @Override
public void remove() {
    throw new UnsupportedOperationException("Not supported yet.");
}
  

Ответ №2:

http://docs.oracle.com/javase/6/docs/api/java/lang/UnsupportedOperationException.html

Выдается, чтобы указать, что запрошенная операция не поддерживается.

например

 @Override
public void remove() {
    throw new UnsupportedOperationException("Cannot remove from unmodifiableList");
}