public class BoundedQueue
1: /**
2: A first-in, first-out bounded collection of objects.
3: */
4: public class BoundedQueue<E>
5: {
6: /**
7: Constructs an empty queue.
8: @param capacity the maximum capacity of the queue
9: */
10: public BoundedQueue(int capacity)
11: {
12: elements = new Object[capacity];
13: head = 0;
14: tail = 0;
15: size = 0;
16: }
18: /**
19: Removes the object at the head.
20: @return the object that has been removed from the queue
21: @precondition !isEmpty()
22: */
23: public E remove()
24: {
25: if (debug) System.out.print("removeFirst");
26: E r = (E) elements[head];
27: if (debug) System.out.print(".");
28: head++;
29: if (debug) System.out.print(".");
30: size--;
31: if (head == elements.length)
32: {
33: if (debug) System.out.print(".");
34: head = 0;
35: }
36: if (debug)
37: System.out.println("head=" + head + ",tail=" + tail
38: + ",size=" + size);
39: return r;
40: }
42: /**
43: Appends an object at the tail.
44: @param newValue the object to be appended
45: @precondition !isFull();
46: */
47: public void add(E newValue)
48: {
49: if (debug) System.out.print("add");
50: elements[tail] = newValue;
51: if (debug) System.out.print(".");
52: tail++;
53: if (debug) System.out.print(".");
54: size++;
55: if (tail == elements.length)
56: {
57: if (debug) System.out.print(".");
58: tail = 0;
59: }
60: if (debug)
61: System.out.println("head=" + head + ",tail=" + tail
62: + ",size=" + size);
63: }
65: public boolean isFull()
66: {
67: return size == elements.length;
68: }
70: public boolean isEmpty()
71: {
72: return size == 0;
73: }
75: public void setDebug(boolean newValue)
76: {
77: debug = newValue;
78: }
80: private Object[] elements;
81: private int head;
82: private int tail;
83: private int size;
84: private boolean debug;
85: }