为不可修改的列表实现迭代器

时间:2016-10-18 10:25:00

标签: java list iterator

我正在基于AbstractSequentialList实现一个不可修改的列表。现在,根据Oracle的文档:

  

对于不可修改的列表,程序员只需要实现列表   iterator的hasNext,next,hasPrevious,previous和index方法。

问题在于我似乎必须提供删除,设置和添加方法的实现,尽管由于列表的不可修改性质而根本不需要这些实现,否则编译器会抱怨因为这些方法没有实现。

所以,我做错了什么,或者这是真正的方法吗?我应该实现这样的方法并在其中抛出某种异常吗?

提前多多感谢,

2 个答案:

答案 0 :(得分:6)

在你不需要实现的方法上抛出UnsupportedOperationException。由Iterator / ListIterator接口文档https://docs.oracle.com/javase/7/docs/api/java/util/ListIterator.html#remove()

指定
  

抛出:UnsupportedOperationException - 如果不执行remove操作   由此列表迭代器支持

e.g。

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

答案 1 :(得分:4)

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

  

抛出以指示不支持所请求的操作。

e.g。

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