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