在Blackberry中实现Queue实现的Peek()和remove()方法

时间:2009-12-07 09:32:16

标签: blackberry java-me queue

我想在Blackberry应用程序中实现peek和remove方法,类似于Java的Queue.peek()和Queue.remove()。我有一个自定义队列实现,但是如何查看元素并从队列中删除元素?

请帮忙,

提前致谢。

2 个答案:

答案 0 :(得分:4)

尝试使用Arrays类...如果你需要窥视,从Object数组中取出最后一个元素,删除只删除最后一个:

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());
        }
    }
}

答案 1 :(得分:3)

你应该可以使用Vector来执行这些类型的操作 - firstElement()来查看列表中的第一个,lastElement()来查看最后一个,或{{{ 1}}查看两者之间的任何内容。然后使用elementAt()删除元素。