2015-02-04 16 views
6

Tôi đã tạo một Stack và ArrayList để thực hiện một nghiên cứu. Trên thực tế tôi muốn bây giờ để làm cho ngăn xếp của tôi thay thế bằng một ArrayList, nhưng làm thế nào để chuyển đổi một ngăn xếp thành một ArrayList? Làm thế nào là nó đi với push, pop ...?Stack to -> ArrayList Java

Cảm ơn bạn

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

Vâng 'pop' loại bỏ các mục từ một' Stack', và 'push' thêm mục vào một 'Stack'. Tại sao bạn thêm các mục vào 'Stack' trong khi sao chép vào' List'? Bạn muốn gì trong 'Danh sách' khi phương thức hoàn thành? –

+0

Chỉ để giữ một dấu vết của nó trong Danh sách – maevy

+0

chỉ để giữ một ca khúc * xin lỗi – maevy

Trả lời

17

Stack là một Bộ sưu tập, bạn có thể sử dụng ArrayList (Collection) constructor

list = new ArrayList(stack); 
Các vấn đề liên quan