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