public class ArrayList<T extends Comparable<T>> implements List<T> {private T[] array;private int numElements;private boolean isSorted;public ArrayList() {array = (T[]) new Comparable[2];numElements = 0;isSorted = true;}public boolean add(T element) {if (element != null) {if (numElements >= array.length - 1)array = cloneArray();array[numElements] = element;numElements++;isSorted = isSorted();return true;}elsereturn false;}public boolean add(int index, T element) {if (element != null && index >= 0 && index < numElements) {if (numElements == array.length)array = cloneArray();for (int i = numElements; i > index; i--)array[i] = array[i - 1];array[index] = element;numElements++;isSorted = isSorted();return true;}elsereturn false;}public void clear() {array = (T[]) new Comparable[2];numElements = 0;}public boolean contains(T element) {boolean contains = false;for (int i = 0; i < numElements; i++) {if (element.compareTo(array[i]) == 0)contains = true;}return contains;}public T get(int index) {return array[index];}public int indexOf(T element) {int index = -1;