import java.util.*;
//------------------------------------------------------------------------------
//Using a linkedList as a Queue.  Using addLast() and removeFirst() methods
//------------------------------------------------------------------------------
public class queue1 
{
    public static void main(String[] args) 
    {
        LinkedList<String> customers = new LinkedList<String>();

        customers.addLast("Sam");                           //add at end
        customers.addLast("John");
        customers.addLast("Larry");
        customers.addLast("Steve");
        
        String customer;

        System.out.println("The ArrayList:");
        System.out.println(customers);                      //print the entire list
        System.out.println();

        customer = customers.removeFirst();                 //remove from start        
        System.out.println("Next on line: " + customer);    
            
        customer = "Joe";
        customers.addLast(customer);                        //add to end
        System.out.println("Adding new customer: " + customer);    

        System.out.println(customers);                      //print the entire list
        System.out.println();

        customer = customers.peekFirst();                   //peek but not remove        
        System.out.println("Next on line: " + customer);    

        System.out.println("is the line empty? " + customers.isEmpty());
        System.out.println();
        
        //Using the for loop ---------------------------------------------------

        for (int i=0; i<customers.size(); i++)
        {
            System.out.println(customers.get(i));
        }
        System.out.println();

        //Using the enhanced for loop ------------------------------------------

        for (String nextCustomer : customers)
        {
            System.out.println(nextCustomer);
        }
        System.out.println();

        //Using an iterator with a while loop ----------------------------------

        Iterator i = customers.iterator();                  //create an iterator

        while(i.hasNext())
        {
            System.out.println(i.next());
        }
        System.out.println();
    }
}