2015-02-04 15 views
6

Zrobiłem stos i ArrayList do badań. Właściwie chcę teraz, aby mój Stack został zastąpiony przez ArrayList, ale jak przekształcić Stack w ArrayList? Jak idzie z push, pop ...?Stos do -> ArrayList Java

Dziękuję

public static ArrayList<State> search(State finalstate) 
{ 
    ArrayList<State> toreturn = new ArrayList<State>(); 
    Stack<State>mystack=new Stack<State>(); 
    mystack.push(initState); 
    State currState; 
    currState=initState; 
    while(!mystack.isEmpty() && !currState.equals(finalstate)) 
    { 
     currState=mystack.pop(); 
     toreturn.add(currState); 
     if(currState.vecinos.containsKey("up")) 
     { 
      mystack.push(currState).vecinos.get("up"); 
     } 
     if(currState.vecinos.containsKey("down")) 
     { 
      mystack.push(currState).vecinos.get("down"); 
     } 
     if(currState.vecinos.containsKey("left")) 
     { 
      mystack.push(currState).vecinos.get("left"); 
     } 
     if(currState.vecinos.containsKey("right")) 
     { 
      mystack.push(currState).vecinos.get("right"); 
     } 
    } 

    return toreturn; 
} 
+0

Dobrze 'pop' usuwa elementy z' Stack' i 'push' dodaje przedmiotów do "stosu". Dlaczego dodajesz elementy do 'Stack' podczas kopiowania do' List'? Co chcesz umieścić na liście 'List' po zakończeniu metody? –

+0

Tylko po to, aby zachować ich ślad na Liście – maevy

+0

tylko po to, aby zachować utwór * przepraszam – maevy

Odpowiedz

17

Stack jest Collection, można użyć ArrayList (Collection) konstruktor

list = new ArrayList(stack);