Outline



Lists



Generic interface



List Interface

public interface list<E> extends Collection<E> {
    E get(int index);       // returns object at given position
    E set(int index, E element);  // sets object, returns old value
    int indexOf(Object o);  // returns index of object in list
    E remove(int index);    // removes object at the given position
    int size();             // returns number of elements in list
    boolean add(E element); // add element at the end of the list
    void add(int index, E element); // add element at given position 
    ...
}



ArrayList<E> Class



ArrayList<E> implementation

public class ArrayList<E> {
   protected E [] data;
   protected int size;

   @SuppressWarnings("unchecked")
   public ArrayList() {
     data = (E []) new Object [16];
   }



Adding at the end of an ArrayList<E>

   public boolean add(E value) {
     data [size] = value;
     size++;
     return true;
   }
   public boolean add(E value) {
     if (size == data.length) {
       data = Arrays.copyOf(data, data.length * 2);
     }
     data [size] = value;
     size++;
     return true;
   }
   public void add(int index, E value) {



Runtime of programs



program runtime analysis



big O notation



common functions used with big O



big O examples



big O growth



figuring out big O



In-class exercise: big O for