2013-03-24 49 views
0

這裏的隨機方法是小樣本:創建將對象添加到堆棧與隨機索引

Stack<String> myStack = new Stack<String>(); 
myStack.add("Cat"); 
myStack.add("Dog"); 
myStack.add("Bird"); 
myStack.add("Elephant"); 

所以基本上myStack對象具有4個字符串。我想用RANDOM索引將3個字符串插入myStack。通常,當我使用myStack.add();放置一個新的字符串時,新輸入將被分配在頂部(索引0),我不希望它在這種情況下。我希望它隨機放入一個隨機索引中。這是什麼解決方案?

+0

堆棧通常用於push和pop操作。你基本上在尋找一份清單。看看'ArrayList',它提供了在指定索引處添加元素的方法,並將列表的其餘部分移回。 – jlordo 2013-03-24 02:20:21

+2

Stack **不允許隨機訪問。如果你需要模擬它,你將不得不做幾次彈出並在堆棧外存儲結果,然後推新值,然後重新推入已保存的值。 – 2013-03-24 02:21:22

+0

謝謝。我想我誤解了規範。我不必將字符串放入隨機索引的堆棧中。 :P – 2013-03-24 02:34:01

回答

1

因爲堆棧是Vector的子類,你可以做這樣的

<E> void addRandom(Stack<E> stack, E e) { 
    stack.add((int) (Math.random() * (stack.size() + 1)), e); 
} 

或進行自定義類

class RandomStack<E> extends Stack<E> { 

    void addRandom(E e) { 
     add((int) (Math.random() * (size() + 1)), e); 
    } 
} 
+0

這對我很有幫助。我認爲它按照我希望的方式工作。謝謝:P – 2013-03-24 03:16:03