Skip to content

Commit 4eb3f44

Browse files
maibinKevinGilmore
authored andcommitted
HashSet and TreeSet comparison (eugenp#1698)
1 parent 91552e1 commit 4eb3f44

1 file changed

Lines changed: 89 additions & 0 deletions

File tree

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package com.baeldung.java.set;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertTrue;
5+
6+
import java.util.ConcurrentModificationException;
7+
import java.util.HashSet;
8+
import java.util.Iterator;
9+
import java.util.Set;
10+
import java.util.TreeSet;
11+
12+
import org.junit.Test;
13+
14+
public class SetTest {
15+
16+
@Test
17+
public void givenTreeSet_whenRetrievesObjects_thenNaturalOrder() {
18+
Set<String> set = new TreeSet<>();
19+
set.add("Baeldung");
20+
set.add("is");
21+
set.add("Awesome");
22+
assertEquals(3, set.size());
23+
assertTrue(set.iterator()
24+
.next()
25+
.equals("Awesome"));
26+
}
27+
28+
@Test(expected = NullPointerException.class)
29+
public void givenTreeSet_whenAddNullObject_thenNullPointer() {
30+
Set<String> set = new TreeSet<>();
31+
set.add("Baeldung");
32+
set.add("is");
33+
set.add(null);
34+
}
35+
36+
@Test
37+
public void givenHashSet_whenAddNullObject_thenOK() {
38+
Set<String> set = new HashSet<>();
39+
set.add("Baeldung");
40+
set.add("is");
41+
set.add(null);
42+
assertEquals(3, set.size());
43+
}
44+
45+
@Test
46+
public void givenHashSetAndTreeSet_whenAddObjects_thenHashSetIsFaster() {
47+
Set<String> set = new HashSet<>();
48+
long startTime = System.nanoTime();
49+
set.add("Baeldung");
50+
set.add("is");
51+
set.add("Awesome");
52+
long endTime = System.nanoTime();
53+
long duration1 = (endTime - startTime);
54+
55+
Set<String> set2 = new TreeSet<>();
56+
startTime = System.nanoTime();
57+
set2.add("Baeldung");
58+
set2.add("is");
59+
set2.add("Awesome");
60+
endTime = System.nanoTime();
61+
long duration2 = (endTime - startTime);
62+
assertTrue(duration1 < duration2);
63+
}
64+
65+
@Test
66+
public void givenHashSetAndTreeSet_whenAddDuplicates_thenOnlyUnique() {
67+
Set<String> set = new HashSet<>();
68+
set.add("Baeldung");
69+
set.add("Baeldung");
70+
assertTrue(set.size() == 1);
71+
72+
Set<String> set2 = new TreeSet<>();
73+
set2.add("Baeldung");
74+
set2.add("Baeldung");
75+
assertTrue(set2.size() == 1);
76+
}
77+
78+
@Test(expected = ConcurrentModificationException.class)
79+
public void givenHashSet_whenModifyWhenIterator_thenFailFast() {
80+
Set<String> set = new HashSet<>();
81+
set.add("Baeldung");
82+
Iterator<String> it = set.iterator();
83+
84+
while (it.hasNext()) {
85+
set.add("Awesome");
86+
it.next();
87+
}
88+
}
89+
}

0 commit comments

Comments
 (0)