2017-11-02 10 views
1

ListIteratorを使用して、オブジェクトのリストを反復処理しています。目標はリストの内容を編集することです。ここでListIteratorを使用してリストコンテンツを編集する方法

は私がやっているものの例です:

public class Test { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     ArrayList list = new ArrayList<>(Arrays.asList("One", "Two", "Three","Four","Five")); 
     ListIterator<String> listIterator = list.listIterator(); 
     String current ; 
     while (listIterator.hasNext()) { 
      doSomething(listIterator); 
      current = listIterator.next(); 
      //here I Want that current has the same value as it was Before The doSomething Call 
      //or in other Word , i want to save the adress of the last visired object In the List before doSomething Call. 
    //As a result i can iterate from this point in the List. 
      } 

     } 

    private static ListIterator<String> doSomething(ListIterator<String> listIterator) { 
     System.out.println("Dosomething " + listIterator.next()); // 
     System.out.println("Dosomething " + listIterator.next()); // 
     System.out.println("Dosomething " + listIterator.next()); // 
     System.out.println("Dosomething " + listIterator.next()); // 
     return listIterator; 
    } 
} 

あなたは私にいくつかの洞察力を与えてくださいませんか?

私はListIteratorを使用しています。私はリストに戻って戻って編集したいからです。あなたはそれを保存し、あなたがdoSomethingを呼び出した後巻き戻すことができるように

+1

'ListIterator'を使って何をしているのか' doSomething'だけ知っているので、 'ListIterator'が終了時に同じ場所にあることを確認してください。 'previous()'を4回呼び出すことによって。 – Andreas

+0

ありがとうございました。別のアイデアはありますか?現在の状態をdosomethingの前に保存したいのですか?+あなたはlistiteratorがまだ私の目的にとっては良いと思うか、別の構造にジャンプしなければならないと思いますか? –

+0

イテレータの状態を保存したり、それを閉じたりコピーしたりすることはできません。あなたが**ドキュメント[** ListIterator'](https://docs.oracle.com/javase/9​​/docs/api/java/util/ListIterator)のjavadocを読んでいれば、すでにこれを知っているはずです。 html)。 – Andreas

答えて

0

ListIteratorは、現在のインデックスを追跡します:

int pos = listIterator.nextIndex(); 
doSomething(listIterator); 
while (listIterator.nextIndex() > pos) { 
    listIterator.previous(); 
} 

これはdoSomethingだけ反復子を進めていることを前提としています。

+0

私はあなたのアイデアを使用して、助けてくれてありがとう。 –

関連する問題