import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * This class demonstrates a comparison of two List implementations in java collections framework
 * ArrayList and LinkedList
 */
public class ListSample1 {

    public static void main(String[] args) {
        //List objects implements the List interface
        List<Integer> arrayList = new ArrayList<Integer>();
        List<Integer> linkedList = new LinkedList<Integer>();

        //Basic operations use indexes to access items
        //Adding
        arrayList.add(10);
        arrayList.add(90);
        arrayList.add(78);

        linkedList.add(22);
        linkedList.add(43);

        //retrieving
        System.out.println(arrayList.get(0));
        System.out.println(linkedList.get(0));

        //removing
        arrayList.remove(0); //slow
        arrayList.remove(arrayList.size() - 1); //fast
        linkedList.remove(0); //fast
        linkedList.remove(linkedList.size() - 1); //slow
    }
        
}