LEARNING OBJECTIVE		
Represent collections of related object reference data using ArrayList  objects.		
For ArrayList  objects:
a. Traverse using a for or while loop
b. Traverse using an enhanced for loop		
For algorithms in the context of a particular specification that requires the use of ArrayList  traversals:
•	Identify standard algorithms.
•	Modify standard algorithms.
•	Develop an algorithm.		
Apply sequential/linear search algorithms to search for specific information in ArrayList  objects.		
Apply selection sort and insertion sort algorithms to sort the elements of ArrayList  objects.		

ESSENTIAL KNOWLEDGE		
An ArrayList  object is mutable and contains object references.		
The ArrayList  constructor ArrayList() constructs an empty list.		
Java allows the generic type ArrayList<E>, where the generic type E specifies the type of the elements.		
When ArrayList<E>  is specified, the types of the reference parameters and return type when using the methods are type E.		
ArrayList<E>  is preferred over ArrayList because it allows the compiler to find errors that would otherwise be found at run-time.		
The ArrayList class is part of the java.util package. An import statement can be used to make this class available for use in the program.		
Iteration statements can be used to access all the elements in an ArrayList. This is called traversing the ArrayList.		
Deleting elements during a traversal of an ArrayList requires using special techniques to avoid skipping elements.		
Since the indices for an ArrayList start at 0 and end at the number of elements -1, accessing an index value outside of this range will result in an ArrayIndexOutOfBoundsException being thrown.		
Changing the size of an ArrayList while traversing it using an enhanced for loop can result in a ConcurrentModificationException being thrown. Therefore, when using an enhanced for loop to traverse an ArrayList, you should not add or remove elements.		
There are standard ArrayList algorithms that utilize traversals to:
•	Insert elements
•	Delete elements
•	Apply the same standard algorithms that are used with 1D arrays		
Some algorithms require multiple String, array, or ArrayList objects to be traversed simultaneously.		
There are standard algorithms for searching.		
Sequential/linear search algorithms check each element in order until the desired value is found or all elements in the array or ArrayList have been checked.		

Selection sort and insertion sort are iterative sorting algorithms that can be used to sort elements in an array or ArrayList.		
The binary search algorithm starts at the middle of a sorted ArrayList and eliminates half of the ArrayList in each iteration until the desired value is found or all elements have been eliminated.		

Class Constructors and Methods	Explanation		
ArrayList Class		
int size()	Returns the number of elements in the list		
boolean add(E obj)	Appends obj to end of list; returns true		
void add(int index, E obj)	Inserts obj at position index (0 <= index <= size), moving elements at position index and higher to the right (adds 1 to their indices) and adds 1 to size		
E get(int index)	Returns the element at position index in the list		
E set(int index, E obj)	Replaces the element at position index with obj; returns the element formerly at position index