我的 peek() 方法不会返回队列的头部

我制作了一个 QueueRunner 课程。我试图找出在 poll() 或 Offer() 之后迭代到队列的头部,以使用 peek() 返回队列的头部。不过,我在返回队列的头部或前面时遇到了麻烦。


Public class Queue<T> {

private ArrayList<T> elements;


public Queue() {

    this.elements = new ArrayList<T>();

}


/**

* Offers an element to the end of the queue.

*

* @param    T   item

*/

public void offer(T element) {

    this.elements.add(element);

}


/**

* Peeks at, but does not remove, the element at the head of the queue.

*

* @return   T

*/

public T peek() {

    if(this.elements.size()==0) {

        return null;

    }

    else {

        return this.elements;

    // return this.elements.get(this.elements.size()-1);

    }

}


/**

* Polls an element from the head of the queue.

*

* @return   T

*/

public T poll() {

    return this.elements.remove(0);

}


慕姐4208626
浏览 96回答 2
2回答

一只萌萌小番薯

this.elements.get(0)会返回队列的头部/前面。由于队列是 FIFO 的,因此添加的第一个元素将最先进入,因此是队列的头部。

阿晨1998

看起来您返回的ArrayList<T>不是元素本身,而是返回的最后一个元素被注释掉。else { &nbsp; &nbsp; &nbsp; &nbsp;return this.elements; &nbsp; &nbsp;// return this.elements.get(this.elements.size()-1); &nbsp; &nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java