import java.util.*; import java.io.*; public class Driver { public static void main (String[] args) { if (args.length != 1) { System.out.println("What is the size of the arraylist?"); System.exit(0); } ArrayList <Integer> A = new ArrayList <Integer>(); int ArrayListSize = Integer.parseInt (args[0]); //Integer.partInt() turns argument into an integer long start = System.currentTimeMillis(); long timetaken; System.out.println("______________________________________________________________"); //testing: creating arraylist for (int i = 0; i < ArrayListSize; i++) { A.add(0); } timetaken = System.currentTimeMillis() - start; System.out.println ("Time taken to make arraylist: " + timetaken); //At 100000, it took 12ms. At 1000000, it took 65ms. At 10000000, it took 109ms. At 100000000, it took 712ms. At 1000000000, it ran out of space. System.out.println("______________________________________________________________"); //testing: adding to arraylist at the beginning start = System.currentTimeMillis(); for (int i = 0; i < ArrayListSize; i++) { A.add (0,0); } timetaken = System.currentTimeMillis() - start; System.out.println ("Time taken to fill list from the beginning: " + timetaken); //At 10000, it took 56ms. At 100000, it took 3065ms. At 1000000, it takes 366640ms. System.out.println("______________________________________________________________"); //testing: adding to arraylist at the end start = System.currentTimeMillis(); for (int i = 0; i < ArrayListSize; i++) { A.add (A.size(),0); } timetaken = System.currentTimeMillis() - start; System.out.println ("Time taken to fill list from the end: " + timetaken); //Much faster time than before. System.out.println ("______________________________________________________________"); //testing: removing from list at the beginning start = System.currentTimeMillis(); for (int i = 0; i < ArrayListSize; i++) { A.remove (0); } timetaken = System.currentTimeMillis() - start; System.out.println ("Time taken to remove list from the beginning: " + timetaken); //Time taken is much higher than time needed to fill list from the beginning. System.out.println ("_____________________________________________________________"); //testing: removing from list at the end start = System.currentTimeMillis(); for (int i = 0; i < ArrayListSize; i++) { A.remove(A.size() - 1); } timetaken = System.currentTimeMillis() - start; System.out.println ("Time taken to remove list from the end: " + timetaken); //Time taken is similar to time taken to fill array from the end. } //reversing the arraylist for (int i = 0; i < A.size(); i++) { int x = A.get(i); int y = A.get(A.size()-1); a.set(i,y); a.set(A.size()-i, x); } }