// An Observable version of the LinkedQueue class. // Barry Cornelius, 19 June 2000 import java.util. LinkedList; import java.util. Iterator; import java.util. List; import java.util. Observable; import java.util. Observer; public class LinkedQueue extends Observable implements Queue { private List iList; public LinkedQueue() { iList = new LinkedList(); } public synchronized void add(final Object pObject) { iList.add(pObject); setChanged(); notifyObservers("add"); } public synchronized Object getFirst() { if (iList.isEmpty()) { return null; } return iList.get(0); } public synchronized Object remove() { if (iList.isEmpty()) { return null; } final Object tObject = iList.remove(0); setChanged(); notifyObservers("remove"); return tObject; } public synchronized int size() { return iList.size(); } //BJCHEREFIRST public synchronized boolean equals(final Object pObject) { if ( pObject==null || getClass()!=pObject.getClass() ) { return false; } return iList.equals(((LinkedQueue)pObject).iList); } public synchronized int hashCode() { return 0; } public synchronized String toString() { if (iList.isEmpty()) { return new String(""); } final StringBuffer tStringBuffer = new StringBuffer(); final Iterator tIterator = iList.iterator(); while (tIterator.hasNext()) { final Object tObject = tIterator.next(); tStringBuffer.append("@" + tObject); } tStringBuffer.deleteCharAt(0); return tStringBuffer.toString(); } }