001 // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 002 // The Molly framework is freely distributable under the terms of an 003 // MIT-style license. For details, see the molly pages web site at: 004 // http://www.mollypages.org/. Use, modify, have fun ! 005 006 package fc.util; 007 008 import java.util.*; 009 //Obsolete with the intro of jdk 1.5 java.util.Q 010 011 /** 012 A thin wrapper around a java collection that provides queue semantics (FIFO). 013 **/ 014 public class Queue extends LinkedList 015 { 016 public Queue() { 017 super(); 018 } 019 020 public Queue(Collection c) { 021 super(c); 022 } 023 024 /** 025 Enqueue's the specified object. Behaves as per {@link java.util.Collection#add(Object)} 026 **/ 027 public boolean enque(Object obj) { 028 return add(obj); 029 } 030 031 /** 032 Dequeues an object from the beginning of the queue 033 034 @throws NoSuchElementException if this list is empty. 035 **/ 036 public Object deque() { 037 return removeFirst(); 038 } 039 040 /** Returns <tt>true</tt> is this queue is empty, <tt>false</tt> otherwise**/ 041 public boolean empty() { 042 return size() == 0; 043 } 044 045 public static void main(String[] args) 046 { 047 Queue q = new Queue(); 048 q.enque("hello"); 049 q.enque("world"); 050 System.out.println("q="+ q); 051 //DO NOT PUT "n < q.size()" in the loop, because with every deque 052 //the SIZE CHANGES (and the loop won't work properly). 053 054 //method 1: take a snapshot 055 /* 056 int size = q.size(); //<--the snapshot 057 for(int n = 0; n < size; n++) { 058 System.out.println("deque["+n+"]="+q.deque()); 059 } 060 */ 061 062 //method 2: use empty() 063 while (! q.empty()) 064 System.out.println(q.deque()); 065 066 System.out.println("This should throw an Exception"); 067 q.deque(); 068 } 069 070 } //~class Queue