Lecture Videos
  1  import java.util.*;
  2  
  3  public class SetListPerformanceTest {
  4    static final int N = 5000;
  5    
  6    public static void main(String[] args) {  
  7      // Add numbers 0, 1, 2, ..., N - 1 to the array list
  8      List<Integer> list = new ArrayList<>();
  9      for (int i = 0; i < N; i++)
 10        list.add(i);
 11      Collections.shuffle(list); // Shuffle the array list
 12      
 13      // Create a hash set, and test its performance
 14      Collection<Integer> set1 = new HashSet<>(list);
 15      System.out.println("Member test time for hash set is " +
 16        getTestTime(set1) + " milliseconds");
 17      System.out.println("Remove element time for hash set is " +
 18        getRemoveTime(set1) + " milliseconds");
 19      
 20      // Create a linked hash set, and test its performance
 21      Collection<Integer> set2 = new LinkedHashSet<>(list);
 22      System.out.println("Member test time for linked hash set is " +
 23        getTestTime(set2) + " milliseconds");
 24      System.out.println("Remove element time for linked hash set is "
 25        + getRemoveTime(set2) + " milliseconds");
 26  
 27      // Create a tree set, and test its performance
 28      Collection<Integer> set3 = new TreeSet<>(list);
 29      System.out.println("Member test time for tree set is " +
 30        getTestTime(set3) + " milliseconds");
 31      System.out.println("Remove element time for tree set is " +
 32        getRemoveTime(set3) + " milliseconds");
 33  
 34      // Create an array list, and test its performance
 35      Collection<Integer> list1 = new ArrayList<>(list);
 36      System.out.println("Member test time for array list is " +
 37        getTestTime(list1) + " milliseconds");
 38      System.out.println("Remove element time for array list is " +
 39        getRemoveTime(list1) + " milliseconds");
 40  
 41      // Create a linked list, and test its performance
 42      Collection<Integer> list2 = new LinkedList<>(list);
 43      System.out.println("Member test time for linked list is " +
 44        getTestTime(list2) + " milliseconds");
 45      System.out.println("Remove element time for linked list is " +
 46        getRemoveTime(list2) + " milliseconds");
 47    }
 48  
 49    public static long getTestTime(Collection<Integer> c) {
 50      long startTime = System.currentTimeMillis();
 51  
 52      // Test if a number is in the collection
 53      for (int i = 0; i < N; i++)
 54        c.contains((int)(Math.random() * 2 * N));
 55  
 56      return System.currentTimeMillis() - startTime; 
 57    }
 58    
 59    public static long getRemoveTime(Collection<Integer> c) {
 60      long startTime = System.currentTimeMillis();
 61  
 62      for (int i = 0; i < N; i++)
 63        c.remove(i);
 64  
 65      return System.currentTimeMillis() - startTime; 
 66    }
 67  }