我认为我对引用类型做了正确的实现,只提供了6个只能存储在队列中的对象,但我遇到了一个问题,即我的代码确实在队列中添加了6个以上的对象,尽管它已经超过了限制。因此,有没有设置队列大小的好例子(引用类型-对象)。否则,这里是我迄今为止队列实现的例子:是的,我知道我可以只使用java实用程序包,但这违背了目标。。。
// Queue uses class List.
package student_finance;
public class Queue <T>
{
private List<T> queueList;
private int capacity;
// no-argument constructor
public Queue()
{
queueList = new List<>("queue");
capacity = 1;
} // end Queue no-argument constructor
// add object to queue
public void enqueue(T object)
{
queueList.insertAtFront(object);
capacity++;
} // end method enqueue
// remove object from queue
public T dequeue() throws EmptyListException
{
return queueList.removeFromFront();
} // end method dequeue
// Another way of Capacity = Capacity - 1;
public void Decrement()
{
capacity--;
}
// Returns the size of the Queue currently.
public int Size()
{
return capacity;
}
// determine if queue is empty
public boolean isEmpty()
{
return queueList.isEmpty();
} // end method isEmpty
// output queue contents
public void print()
{
queueList.print();
} // end method print
}
首先,您的队列看起来实际上是一个堆栈。您从列表的同一端入队和出队,使其成为后进先出法,而不是FIFO。
queueList.insertAtFront(object);
和
return queueList.removeFromFront();
其次,您实际上没有指定队列的限制,因此没有什么可以阻止超过6个元素排队。您需要在enqueue
中检查您是否没有达到限额——如果没有,请继续排队。