使用迭代时,将抛出IllegalStateException
的条件?我正在完成任务,这是多项选择:
a)致电remove
后致电next
b)致电next
后致电previous
c)致电remove
后致电remove
d)在致电remove
previous
我在“API文档”中发现的是,如果尚未调用next
方法,或者在最后一次调用{{1}后调用了remove
方法方法。
所以答案必须是“a”,但我被告知这是错误的。为什么我的推理错了,什么是正确答案?
答案 0 :(得分:2)
您有一个列表[a, b, c, d, e]
。指针N
开始指向任何东西。这是Java中迭代器的标准起始位置。
情景A) - 致电next
,N
现在指向a
。调用remove
,a
已消失且列表为[b, c, d, e]
,N
无效。
情景B)致电previous
,N
现在指向e
。致电next
,N
现在指向a
。
情景C)致电next
,N
指向a
。致电remove
,a
消失,N
无效。调用remove,
IllegalStateException is thrown.
N`指向任何内容,因此无法删除任何内容。
情景D)致电previous
,N
指向e
。致电remove
,e
已消失,N
无效。
情景E)致电remove
,N
没有任何指示,因此会抛出IllegalStateException
。