我想在黑莓應用程序中實現peek和remove方法,類似於Java的Queue.peek()和Queue.remove()。我有一個自定義的隊列實現,但是如何查看元素並從隊列中刪除元素?黑莓隊列隊列實現的Peek()和remove()方法
請幫忙,
在此先感謝。
我想在黑莓應用程序中實現peek和remove方法,類似於Java的Queue.peek()和Queue.remove()。我有一個自定義的隊列實現,但是如何查看元素並從隊列中刪除元素?黑莓隊列隊列實現的Peek()和remove()方法
請幫忙,
在此先感謝。
嘗試使用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());
}
}
}
謝謝Coldice,它幫了我 – iOSDev 2009-12-08 06:55:45
不客氣! – 2009-12-08 08:13:05
'Arrays.remove'從OS 4.0開始就沒有記錄,理由很充分:它在某些版本中不起作用。 – 2012-02-23 16:14:12