Source of BoundedQueue.java


  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: }