1

イテレーションで作業する場合、どの条件IllegalStateExceptionでスローされますか? 私は割り当てに取り組んでおり、それは多肢選択式です:

a) 呼んだremove後に呼ぶnext
b) 呼んだnext後に呼ぶprevious
c) 呼んだremove後に呼ぶremove
d) 呼んだremove後に呼ぶprevious

「APIドキュメント」で見つけたのは、nextメソッドがまだ呼び出されていないか、removeメソッドへの最後の呼び出しの後にメソッドが既に呼び出されているnext場合です。

したがって、答えは「a」でなければなりませんが、それは間違っていると言われています。なぜ私の推論は間違っているのですか? 正しい答えは何ですか?

4

1 に答える 1

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何も指していない。Call remove,IllegalStateException is thrown.N`は何も指していないため、何も削除できません。

シナリオD)呼び出しpreviousNはを指していeます。呼び出しはremoveeなくなって、N何も指していない。

シナリオE)呼び出しremoveN何も指していないので、IllegalStateExceptionスローされます。

于 2012-04-10T21:00:12.853 に答える