Подтвердить что ты не робот

Stack to → ArrayList Java

Я сделал Stack и ArrayList, чтобы провести исследование. На самом деле, я хочу, чтобы мой стек был заменен на ArrayList, но как преобразовать Stack в ArrayList? Как это происходит с помощью push, pop...?

Спасибо

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;
}
4b9b3361

Ответ 1

Stack - это коллекция, вы можете использовать конструктор ArrayList (Collection)

list = new ArrayList(stack);

Ответ 2

Приведенный выше ответ неверен, так как порядок будет обратным.
Вместо этого вы можете просто повторить это:

Stack<State> stack = new Stack<>();
List<State> list = new ArrayList<>();
while(!stack.isEmpty()) { 
    list.add(stack.pop()); 
}