01: import java.util.ArrayList; 02: 03: /** 04: A first-in, first-out bounded collection of messages. 05: */ 06: public class MessageQueue 07: { 08: /** 09: Constructs an empty message queue. 10: */ 11: public MessageQueue() 12: { 13: queue = new ArrayList(); 14: } 15: 16: /** 17: Remove message at head. 18: @return message that has been removed from the queue 19: */ 20: public Message remove() 21: { 22: if (!queue.isEmpty()) 23: return (Message) queue.remove(0); 24: else 25: throw new IllegalStateException("Queue is empty"); 26: } 27: 28: /** 29: Append message at tail. 30: @param newMessage the message to be appended 31: */ 32: public void add(Message newMessage) 33: { 34: queue.add(newMessage); 35: } 36: 37: /** 38: Get the total number of messages in the queue. 39: @return the total number of messages in the queue 40: */ 41: public int getLength() 42: { 43: return queue.size(); 44: } 45: 46: /** 47: Get message at head. 48: @return message that is at the head of the queue 49: */ 50: public Message getHead() 51: { 52: if (!queue.isEmpty()) 53: return (Message) queue.get(0); 54: else 55: throw new IllegalStateException("Queue is empty"); 56: } 57: 58: private ArrayList queue; 59: }