2017-11-02 2 views
1

ListIterator을 사용하여 일부 개체 목록을 반복합니다. 목표는 목록의 내용을 편집하는 것입니다.ListIterator를 사용하여 List 내용을 편집하는 방법

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을 사용하고 있습니다.

+1

오직'doSomething' 만'ListIterator'로 무엇을하는지 알고 있습니다. 그래서'ListIterator'가 진입시와 같은 출구에 있는지 확인하는 것이 좋습니다. 'previous() '를 네 번 호출하여. – Andreas

+0

도움을 주셔서 감사합니다. 또 다른 아이디어가 있습니까? dosomething하기 전에 현재 상태를 저장하는 것과 같습니까? + 당신은 그 listiterator가 여전히 내 목적에 좋다고 생각합니까, 아니면 다른 구조로 뛰어야 만합니까? –

+0

반복자의 상태를 저장하거나 닫거나 복사 할 수 없습니다. ** ** [ListIterator'] (https://docs.oracle.com/javase/9/docs/api/java/util/ListIterator)의 javadoc과 같은 ** 문서를 읽었다면 이미 알고 있어야합니다. html). – Andreas

답변

0

ListIterator는 현재 인덱스를 추적, 그래서 당신은 doSomething를 호출 한 후에는 저장 및 되감기 할 수 있습니다

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

doSomething 만 반복자를 진행한다고 가정합니다.

+0

나는 당신의 아이디어를 사용하겠다. 도움을 주셔서 감사합니다. –