ListQueue.java |
/*************************************** * * * JBoss: The OpenSource J2EE WebOS * * * * Distributable under LGPL license. * * See terms of license at gnu.org. * * * ***************************************/ package org.jboss.util.collection; import java.util.List; import java.util.LinkedList; import java.util.Iterator; import org.jboss.util.NullArgumentException; /** * A ListQueue implements a first-in, first-out container using a List as * a data structure. * * @version <tt>$Revision: 1.3 $</tt> * @author <a href="mailto:jason@planet57.com">Jason Dillon</a> */ public class ListQueue extends AbstractQueue { /** List container */ protected final List list; /** * Construct a new <i>constrained</i> ListQueue. * * @param list The list which will be used to store queued objects. * @param maxSize The maximum size of the queue. * * @exception IllegalArgumentException List is <i>null</i>. */ public ListQueue(final List list, final int maxSize) { super(maxSize); if (list == null) throw new NullArgumentException("list"); this.list = list; } /** * Construct a new <i>constrained</i> ListQueue using a * <code>LinkedList</code> for a data-structure. * * @param maxSize The maximum size of the queue. */ public ListQueue(final int maxSize) { super(maxSize); this.list = new LinkedList(); } /** * Construct a new <i>unconstrained</i> ListQueue. * * @param list The list which will be used to store queued objects. * * @exception IllegalArgumentException List is <i>null</i> */ public ListQueue(final List list) { this(list, UNLIMITED_MAXIMUM_SIZE); } /** * Construct a new <i>unconstrained</i> ListQueue using a * <code>LinkedList</code> for a data-structure. */ public ListQueue() { this(new LinkedList(), UNLIMITED_MAXIMUM_SIZE); } /** * Appends the given element to the end of this list. * * @param obj Object to append. */ protected boolean addLast(final Object obj) { return list.add(obj); } /** * Remove the first object in the queue. * * @return First object in the queue. */ protected Object removeFirst() { return list.remove(0); } /** * Get the size of the queue. * * @return The number of elements in the queue. */ public int size() { return list.size(); } /** * Returns an iterator over the elements in this list in proper sequence. * * @return An iterator over the elements in this list in proper sequence. */ public Iterator iterator() { return list.iterator(); } /** * Get the object at the front of the queue. * * @return Object at the front of the queue. * * @exception EmptyCollectionException The queue is empty. */ public Object getFront() throws EmptyCollectionException { if (isEmpty()) throw new EmptyCollectionException(); return list.get(0); } /** * Get the object at the back of the queue. * * @return Object at the back of the queue. * * @exception EmptyCollectionException The queue is empty. */ public Object getBack() throws EmptyCollectionException { if (isEmpty()) throw new EmptyCollectionException(); return list.get(list.size() - 1); } /** * Returns an iterator over the elements in this list in reverse sequence. * * @return An iterator over the elements in this list in reverse sequence. */ public Iterator reverseIterator() { return new ReverseListIterator(list); } /** * Return a String representation of this queue. * * @return String */ public String toString() { return list.toString(); } }
ListQueue.java |