import java.util.*; import java.io.*; public class Driver { public static void main(String[] args) { //part 1 ArrayList<String> a = new ArrayList<String>(); int n = Integer.parseInt(args[0]); long t = System.currentTimeMillis(); for (int i=0; i<n; i++) a.add("x"); t = System.currentTimeMillis() - t; System.out.println("Added to End: " + t); a = new ArrayList<String>(); t = System.currentTimeMillis(); for (int i=0; i<n; i++) a.add(0, "x"); t = System.currentTimeMillis() - t; System.out.println("Added to Front: " + t); //Adding to end was faster, by a lot: 3-34 at size 10000 //part 2 ArrayList<String> b = new ArrayList<String>(a); //Copies a into b t = System.currentTimeMillis(); for (int i=0; i<n; i++) a.remove(0); t = System.currentTimeMillis() - t; System.out.println("Removed from Front: " + t); t = System.currentTimeMillis(); for (int i=0; i<n; i++) b.remove(b.size()-1); t = System.currentTimeMillis() - t; System.out.println("Removed from End: " + t); //Removing from end was faster, by even more: 2-41 at size 10000 //part 3 ArrayList<Integer> c = new ArrayList<Integer>(); for (int i=0; i<n; i++) c.add(i); System.out.println("Original List: " + c); t = System.currentTimeMillis(); c = reverse(c); t = System.currentTimeMillis() - t; System.out.println("Reversed List: " + c); System.out.println("Reverse Time: " + t); } private static ArrayList<Integer> reverse(ArrayList<Integer> a) { ArrayList<Integer> r = new ArrayList<Integer>(); for (int i=a.size()-1; i>=0; i--) r.add(a.get(i)); return r; } }