Skip to content

Commit 1d73d59

Browse files
authored
Merge pull request eugenp#3243 from shouvikbhattacharya/BAEL-1433
Bael 1433: Guide to TreeSet in Java
2 parents 5055f34 + ef4b560 commit 1d73d59

1 file changed

Lines changed: 223 additions & 0 deletions

File tree

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
package com.baeldung.collection;
2+
3+
import java.util.Comparator;
4+
import java.util.ConcurrentModificationException;
5+
import java.util.Iterator;
6+
import java.util.NavigableSet;
7+
import java.util.Set;
8+
import java.util.SortedSet;
9+
import java.util.TreeSet;
10+
11+
import org.junit.Assert;
12+
import org.junit.Test;
13+
14+
public class WhenUsingTreeSet {
15+
16+
private static class Element {
17+
private Integer id;
18+
19+
public Integer getId() {
20+
return id;
21+
}
22+
23+
public void setId(Integer id) {
24+
this.id = id;
25+
}
26+
27+
@Override
28+
public String toString() {
29+
// TODO Auto-generated method stub
30+
return id.toString();
31+
}
32+
}
33+
34+
private Comparator<Element> comparator = (ele1, ele2) -> {
35+
return ele1.getId()
36+
.compareTo(ele2.getId());
37+
};
38+
39+
@Test
40+
public void whenAddingElement_shouldAddElement() {
41+
Set<String> treeSet = new TreeSet<>();
42+
Assert.assertTrue(treeSet.add("String Added"));
43+
}
44+
45+
@Test
46+
public void whenCheckingForElement_shouldSearchForElement() {
47+
Set<String> treeSetContains = new TreeSet<>();
48+
treeSetContains.add("String Added");
49+
Assert.assertTrue(treeSetContains.contains("String Added"));
50+
}
51+
52+
@Test
53+
public void whenRemovingElement_shouldRemoveElement() {
54+
Set<String> removeFromTreeSet = new TreeSet<>();
55+
removeFromTreeSet.add("String Added");
56+
Assert.assertTrue(removeFromTreeSet.remove("String Added"));
57+
}
58+
59+
@Test
60+
public void whenClearingTreeSet_shouldClearTreeSet() {
61+
Set<String> clearTreeSet = new TreeSet<>();
62+
clearTreeSet.add("String Added");
63+
clearTreeSet.clear();
64+
Assert.assertTrue(clearTreeSet.isEmpty());
65+
}
66+
67+
@Test
68+
public void whenCheckingTheSizeOfTreeSet_shouldReturnThesize() {
69+
Set<String> treeSetSize = new TreeSet<>();
70+
treeSetSize.add("String Added");
71+
Assert.assertEquals(1, treeSetSize.size());
72+
}
73+
74+
@Test
75+
public void whenCheckingForEmptyTreeSet_shouldCheckForEmpty() {
76+
Set<String> emptyTreeSet = new TreeSet<>();
77+
Assert.assertTrue(emptyTreeSet.isEmpty());
78+
}
79+
80+
@Test
81+
public void whenIteratingTreeSet_shouldIterateTreeSetInAscendingOrder() {
82+
Set<String> treeSet = new TreeSet<>();
83+
treeSet.add("First");
84+
treeSet.add("Second");
85+
treeSet.add("Third");
86+
Iterator<String> itr = treeSet.iterator();
87+
while (itr.hasNext()) {
88+
System.out.println(itr.next());
89+
}
90+
}
91+
92+
@Test
93+
public void whenIteratingTreeSet_shouldIterateTreeSetInDescendingOrder() {
94+
TreeSet<String> treeSet = new TreeSet<>();
95+
treeSet.add("First");
96+
treeSet.add("Second");
97+
treeSet.add("Third");
98+
Iterator<String> itr = treeSet.descendingIterator();
99+
while (itr.hasNext()) {
100+
System.out.println(itr.next());
101+
}
102+
}
103+
104+
@Test(expected = ConcurrentModificationException.class)
105+
public void whenModifyingTreeSetWhileIterating_shouldThrowException() {
106+
Set<String> treeSet = new TreeSet<>();
107+
treeSet.add("First");
108+
treeSet.add("Second");
109+
treeSet.add("Third");
110+
Iterator<String> itr = treeSet.iterator();
111+
while (itr.hasNext()) {
112+
itr.next();
113+
treeSet.remove("Second");
114+
}
115+
}
116+
117+
@Test
118+
public void whenRemovingElementUsingIterator_shouldRemoveElement() {
119+
Set<String> treeSet = new TreeSet<>();
120+
treeSet.add("First");
121+
treeSet.add("Second");
122+
treeSet.add("Third");
123+
Iterator<String> itr = treeSet.iterator();
124+
while (itr.hasNext()) {
125+
String element = itr.next();
126+
if (element.equals("Second"))
127+
itr.remove();
128+
}
129+
Assert.assertEquals(2, treeSet.size());
130+
}
131+
132+
@Test(expected = NullPointerException.class)
133+
public void whenAddingNullToNonEmptyTreeSet_shouldThrowException() {
134+
Set<String> treeSet = new TreeSet<>();
135+
treeSet.add("First");
136+
treeSet.add(null);
137+
}
138+
139+
@Test
140+
public void whenCheckingFirstElement_shouldReturnFirstElement() {
141+
TreeSet<String> treeSet = new TreeSet<>();
142+
treeSet.add("First");
143+
Assert.assertEquals("First", treeSet.first());
144+
}
145+
146+
@Test
147+
public void whenCheckingLastElement_shouldReturnLastElement() {
148+
TreeSet<String> treeSet = new TreeSet<>();
149+
treeSet.add("First");
150+
treeSet.add("Last");
151+
Assert.assertEquals("Last", treeSet.last());
152+
}
153+
154+
@Test
155+
public void whenUsingComparator_shouldSortAndInsertElements() {
156+
Set<Element> treeSet = new TreeSet<>(comparator);
157+
Element ele1 = new Element();
158+
ele1.setId(100);
159+
Element ele2 = new Element();
160+
ele2.setId(200);
161+
162+
treeSet.add(ele1);
163+
treeSet.add(ele2);
164+
165+
System.out.println(treeSet);
166+
}
167+
168+
@Test
169+
public void whenUsingHeadSet_shouldReturnElementsLessThanSpecifiedElement() {
170+
Set<Element> treeSet = new TreeSet<>(comparator);
171+
Element ele1 = new Element();
172+
ele1.setId(100);
173+
Element ele2 = new Element();
174+
ele2.setId(200);
175+
176+
treeSet.add(ele1);
177+
treeSet.add(ele2);
178+
179+
System.out.println(treeSet);
180+
}
181+
182+
@Test
183+
public void whenUsingSubSet_shouldReturnSubSetElements() {
184+
SortedSet<Integer> treeSet = new TreeSet<>();
185+
treeSet.add(1);
186+
treeSet.add(2);
187+
treeSet.add(3);
188+
treeSet.add(4);
189+
treeSet.add(5);
190+
treeSet.add(6);
191+
192+
Set<Integer> subSet = treeSet.subSet(2, 6);
193+
System.out.println(subSet);
194+
}
195+
196+
@Test
197+
public void whenUsingHeadSet_shouldReturnHeadSetElements() {
198+
SortedSet<Integer> treeSet = new TreeSet<>();
199+
treeSet.add(1);
200+
treeSet.add(2);
201+
treeSet.add(3);
202+
treeSet.add(4);
203+
treeSet.add(5);
204+
treeSet.add(6);
205+
206+
Set<Integer> subSet = treeSet.headSet(6);
207+
Assert.assertEquals(subSet, treeSet.subSet(1, 6));
208+
}
209+
210+
@Test
211+
public void whenUsingTailSet_shouldReturnTailSetElements() {
212+
NavigableSet<Integer> treeSet = new TreeSet<>();
213+
treeSet.add(1);
214+
treeSet.add(2);
215+
treeSet.add(3);
216+
treeSet.add(4);
217+
treeSet.add(5);
218+
treeSet.add(6);
219+
220+
Set<Integer> subSet = treeSet.tailSet(3);
221+
Assert.assertEquals(subSet, treeSet.subSet(3, true, 6, true));
222+
}
223+
}

0 commit comments

Comments
 (0)