2015-02-04 16 views
6

Ho creato uno Stack e un ArrayList per effettuare una ricerca. In realtà ora voglio rendere il mio Stack sostituito da un ArrayList, ma come trasformare uno Stack in un ArrayList? Come va con push, pop ...?Stack a -> ArrayList Java

Grazie

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

Bene 'pop' rimuove gli elementi da un' Stack', e 'push' aggiunge articoli a un 'Stack'. Perché stai aggiungendo elementi al tuo 'Stack' mentre copi nella' Lista'? Cosa vuoi nel tuo 'Elenco' quando il metodo viene completato? –

+0

Solo per tenerne traccia nell'Elenco – maevy

+0

solo per mantenere una traccia * mi spiace – maevy

risposta

17

Stack è una collezione, è possibile utilizzare ArrayList (Collection) costruttore

list = new ArrayList(stack);