2009-12-07 127 views

回答

4

嘗試使用Arrays類...如果你需要偷看,採取最後一個元素的對象數組,只刪除刪除最後一個:

class Queue { 
    private Object[] mElements = new Object[] {}; 

    public void enqueue(Object element) { 
     Arrays.insertAt(mElements, element, 0); 
    } 

    public Object dequeue() { 
     Object result = null; 
     if (null != mElements && 0 < mElements.length) { 
      result = mElements[mElements.length - 1]; 
      Arrays.remove(mElements, result); 
     } 
     return result; 
    } 

    public Object peek() { 
     if (null != mElements && 0 < mElements.length) 
      return mElements[mElements.length - 1]; 
     else 
      return null; 
    } 

    public void remove() { 
     if (null != mElements && 0 < mElements.length) 
      Arrays.remove(mElements, peek()); 
    } 
} 

使用例如:

class Scr extends MainScreen { 
    public Scr() { 
     Queue queue = new Queue(); 
     queue.enqueue(new String("3"));   
     queue.enqueue(new Boolean(true)); 
     queue.enqueue(new Integer(1));  
     //see "3" in console 
     System.out.println(queue.peek()); 
     //see "3" still there 
     System.out.println(queue.peek()); 
     //remove "3" 
     queue.remove(); 
     //see "true" in console 
     System.out.println(queue.peek());  
     //dequeue all elements 
     Object element = null; 
     while ((element = queue.dequeue()) != null) { 
      System.out.println(element.toString()); 
     } 
    } 
} 
+0

謝謝Coldice,它幫了我 – iOSDev 2009-12-08 06:55:45

+0

不客氣! – 2009-12-08 08:13:05

+0

'Arrays.remove'從OS 4.0開始就沒有記錄,理由很充分:它在某些版本中不起作用。 – 2012-02-23 16:14:12

3

你應該可以使用Vector來執行這些類型的操作 - firstElement()來查看列表中的第一個,lastElement()以查看最後一個,或elementAt()查看之間的任何內容。然後使用removeElementAt()刪除一個元素。

+0

感謝Marc提供了答案 – iOSDev 2009-12-08 06:54:36