Created
November 17, 2015 05:12
-
-
Save dangnhdev/482aaae384eff79a8bdb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
public class SetListPerformanceTest { | |
static final int N = 50000; | |
public static void main(String[] args) { | |
// Add numbers 0, 1, 2, ..., N - 1 to the array list | |
List<Integer> list = new ArrayList<Integer>(); | |
for (int i = 0; i < N; i++) | |
list.add(i); | |
Collections.shuffle(list); // Shuffle the array list | |
// Create a hash set, and test its performance | |
Collection<Integer> set1 = new HashSet<Integer>(list); | |
System.out.println("Member test time for hash set is " + | |
getTestTime(set1) + " milliseconds"); | |
System.out.println("Remove element time for hash set is " + | |
getRemoveTime(set1) + " milliseconds"); | |
// Create a linked hash set, and test its performance | |
Collection<Integer> set2 = new LinkedHashSet<Integer>(list); | |
System.out.println("Member test time for linked hash set is " + | |
getTestTime(set2) + " milliseconds"); | |
System.out.println("Remove element time for linked hash set is " | |
+ getRemoveTime(set2) + " milliseconds"); | |
// Create a tree set, and test its performance | |
Collection<Integer> set3 = new TreeSet<Integer>(list); | |
System.out.println("Member test time for tree set is " + | |
getTestTime(set3) + " milliseconds"); | |
System.out.println("Remove element time for tree set is " + | |
getRemoveTime(set3) + " milliseconds"); | |
// Create an array list, and test its performance | |
Collection<Integer> list1 = new ArrayList<Integer>(list); | |
System.out.println("Member test time for array list is " + | |
getTestTime(list1) + " milliseconds"); | |
System.out.println("Remove element time for array list is " + | |
getRemoveTime(list1) + " milliseconds"); | |
// Create a linked list, and test its performance | |
Collection<Integer> list2 = new LinkedList<Integer>(list); | |
System.out.println("Member test time for linked list is " + | |
getTestTime(list2) + " milliseconds"); | |
System.out.println("Remove element time for linked list is " + | |
getRemoveTime(list2) + " milliseconds"); | |
} | |
public static long getTestTime(Collection<Integer> c) { | |
long startTime = System.currentTimeMillis(); | |
// Test if a number is in the collection | |
for (int i = 0; i < N; i++) | |
c.contains((int)(Math.random() * 2 * N)); | |
return System.currentTimeMillis() - startTime; | |
} | |
public static long getRemoveTime(Collection<Integer> c) { | |
long startTime = System.currentTimeMillis(); | |
for (int i = 0; i < N; i++) | |
c.remove(i); | |
return System.currentTimeMillis() - startTime; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment