Java Reference
In-Depth Information
is in a hash set, linked hash set, tree set, array list, and linked list, and (2) removing elements
from a hash set, linked hash set, tree set, array list, and linked list.
L ISTING 21.6
SetListPerformanceTest.java
1 import java.util.*;
2
3 public class SetListPerformanceTest {
4
static final int N = 50000 ;
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
create test data
shuffle
a hash set
a linked hash set
a tree set
an array list
a linked list
public static long getTestTime(Collection<Integer> c) {
50
long startTime = System.currentTimeMillis();
start time
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));
test membership
55
56
return System.currentTimeMillis() - startTime;
return execution time
 
 
Search WWH ::




Custom Search