import java.io.*; import java.util.*; public class Driver{ public static void main(String[] args){ ArrayList<Integer> test = new ArrayList<Integer>(); int howlong = 100000; //part 1: adding to beginning is much slower than adding to end. didn't have the patience to wait for anything > 10k long time = System.currentTimeMillis(); for (int i=0; i<howlong; i++){ test.add(1); } System.out.println("Time to add at end: " + ( System.currentTimeMillis() - time)); test.clear(); time = System.currentTimeMillis(); for (int i=0; i<howlong; i++){ test.add(0, 1); } System.out.println("Time to add at beginning: "+(System.currentTimeMillis()-time)); test.clear(); //part 2: takes longer to remove front the front than from the end for (int i=0; i<howlong; i++){ test.add(1); } ArrayList<Integer> test1 = new ArrayList<Integer>(test); ArrayList<Integer> test2 = new ArrayList<Integer>(test); time=System.currentTimeMillis(); for (int i=0; i<test1.size(); i++){ test1.remove(0); } System.out.println("Time to remove from front: "+ (System.currentTimeMillis()-time)); time = System.currentTimeMillis(); for (int i=0; i<test2.size(); i++){ test2.remove(i); } System.out.println("Time to remove from back: "+(System.currentTimeMillis()- time)); test.clear(); //part 3: reverseList for (int i = 0; i < 100; i++){ test.add(i); } System.out.println("Original:" + test); for (int i = 0; i < test.size()/2; i++){ int l= test.get(i); int r=test.get(test.size()-1-i); test.set(i,r); test.set(test.size()-1-i,l); } System.out.println("Reversed:" + test); } }