1 import java.util.*;
2
3 public class SetListPerformanceTest {
4 static final int N = 5000;
5
6 public static void main(String[] args) {
7
8 List<Integer> list = new ArrayList<>();
9 for (int i = 0; i < N; i++)
10 list.add(i);
11 Collections.shuffle(list);
12
13
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
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
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
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
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
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 }