import java.util.*;
import java.io.*;
public class ArrayLists{
public static void main (String[] args){
ArrayList <Integer> a = new ArrayList <Integer>();
//Part 1
System.out.println("Testing add time:");
long start = System.currentTimeMillis();
for (int i=0;i<100;i++)
a.add(i);
long end = System.currentTimeMillis();
System.out.println("a.add(i) for i<100 took: " + (end-start) + " ms.");
start = System.currentTimeMillis();
for (int i=0;i<100;i++)
a.add(0,i);
end = System.currentTimeMillis();
System.out.println("a.add(0,i) for i<100 took: " + (end-start) + " ms.");
start = System.currentTimeMillis();
for (int i=0;i<1000;i++)
a.add(i);
end = System.currentTimeMillis();
System.out.println("a.add(i) for i<1000 took: " + (end-start) + " ms.");
start = System.currentTimeMillis();
for (int i=0;i<1000;i++)
a.add(0,i);
end = System.currentTimeMillis();
System.out.println("a.add(0,i) for i<1000 took: " + (end-start) + " ms.");
start = System.currentTimeMillis();
for (int i=0;i<10000;i++)
a.add(i);
end = System.currentTimeMillis();
System.out.println("a.add(i) for i<10000 took: " + (end-start) + " ms.");
start = System.currentTimeMillis();
for (int i=0;i<10000;i++)
a.add(0,i);
end = System.currentTimeMillis();
System.out.println("a.add(0,i) for i<10000 took: " + (end-start) + " ms.");
//a.add(0,i) begins taking longer than a.add(i) at around i=1000.
//Part 2
System.out.println("Testing remove time:");
start = System.currentTimeMillis();
for (int i=0;i<100;i++)
a.remove(0);
end = System.currentTimeMillis();
System.out.println("a.remove(0) for i<100 took: " + (end-start) + " ms.");
start = System.currentTimeMillis();
for (int i=0;i<100;i++)
a.remove(a.size()-1);
end = System.currentTimeMillis();
System.out.println("a.remove(size()-1) for i<100 took: " + (end-start) + " ms.");
start = System.currentTimeMillis();
for (int i=0;i<1000;i++)
a.remove(0);
end = System.currentTimeMillis();
System.out.println("a.remove(0) for i<1000 took: " + (end-start) + " ms.");
start = System.currentTimeMillis();
for (int i=0;i<1000;i++)
a.remove(a.size()-1);
end = System.currentTimeMillis();
System.out.println("a.remove(size()-1) for i<1000 took: " + (end-start) + " ms.");
//removing from the beginning of the arraylist takes way longer.
//Part 3
System.out.println("Reverse");
ArrayList <Integer> a2 = new ArrayList <Integer>();
for (int i =0; i<50; i++)
a2.add((int)(Math.random()*100));
ArrayList <Integer> ans = new ArrayList <Integer>();
for (int i=0; i<a2.size(); i++)
ans.add(0,a2.get(i));
//Test Reverse
System.out.println(a2.toString());
System.out.println(ans.toString());
}
}