在哪种情况下会抛出IllegalStateException?

时间:2012-04-10 20:46:28

标签: java exception iterator illegalstateexception

使用迭代时,将抛出IllegalStateException的条件?我正在完成任务,这是多项选择:

a)致电remove后致电next b)致电next后致电previous c)致电remove后致电remove d)在致电remove

后致电previous

我在“API文档”中发现的是,如果尚未调用next方法,或者在最后一次调用{{1}后调用了remove方法方法。

所以答案必须是“a”,但我被告知这是错误的。为什么我的推理错了,什么是正确答案?

1 个答案:

答案 0 :(得分:2)

您有一个列表[a, b, c, d, e]。指针N开始指向任何东西。这是Java中迭代器的标准起始位置。

情景A) - 致电nextN现在指向a。调用removea已消失且列表为[b, c, d, e]N无效。

情景B)致电previousN现在指向e。致电nextN现在指向a

情景C)致电nextN指向a。致电removea消失,N无效。调用remove, IllegalStateException is thrown. N`指向任何内容,因此无法删除任何内容。

情景D)致电previousN指向e。致电removee已消失,N无效。

情景E)致电removeN没有任何指示,因此会抛出IllegalStateException