ListIteratorの動作を示す次のコードがありますが、イテレータによって返されたアイテムが期待どおりではないようです。java ListIteratorが期待したアイテムを返さない
import java.util.*;
public class IteratorExample {
public static void main(String args[]) {
ArrayList al = new ArrayList();
al.add("A");
al.add("B");
al.add("C");
ListIterator litr = al.listIterator();
System.out.print(litr.next()); // expect A
System.out.print(litr.next()); // expect B
System.out.print(litr.next()); // expect C
System.out.print(litr.previous()); // expect B
System.out.print(litr.previous()); // expect A
System.out.print(litr.next()); // expect B
System.out.print(litr.previous()); // expect A
}}
「ABCBABA」が表示されると予想されましたが、サンプルプログラムでは「ABCCBBB」と表示されます。誰でもイテレータの動作を説明できますか?イテレータを使用するだけで結果「ABCBABA」になりたい場合、どうすればよいですか?
ので、出力は当然である:あなたのリストが作成された直後
は、イテレータの位置は、次のようなものです前の結果は 'C'なので' previous() 'は' C'を返します。基本的に、方向を変更すると、戻ったばかりの値が表示されます。あなたが望んでいなければ、 'litr.previous()'を呼び出して、その結果を無視してそれを無視することができます。 – khelwood