HashSet and TreeSet comparison (#1698)
This commit is contained in:
parent
91552e127d
commit
4eb3f44b14
|
@ -0,0 +1,89 @@
|
||||||
|
package com.baeldung.java.set;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.util.ConcurrentModificationException;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class SetTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenTreeSet_whenRetrievesObjects_thenNaturalOrder() {
|
||||||
|
Set<String> set = new TreeSet<>();
|
||||||
|
set.add("Baeldung");
|
||||||
|
set.add("is");
|
||||||
|
set.add("Awesome");
|
||||||
|
assertEquals(3, set.size());
|
||||||
|
assertTrue(set.iterator()
|
||||||
|
.next()
|
||||||
|
.equals("Awesome"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = NullPointerException.class)
|
||||||
|
public void givenTreeSet_whenAddNullObject_thenNullPointer() {
|
||||||
|
Set<String> set = new TreeSet<>();
|
||||||
|
set.add("Baeldung");
|
||||||
|
set.add("is");
|
||||||
|
set.add(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenHashSet_whenAddNullObject_thenOK() {
|
||||||
|
Set<String> set = new HashSet<>();
|
||||||
|
set.add("Baeldung");
|
||||||
|
set.add("is");
|
||||||
|
set.add(null);
|
||||||
|
assertEquals(3, set.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenHashSetAndTreeSet_whenAddObjects_thenHashSetIsFaster() {
|
||||||
|
Set<String> set = new HashSet<>();
|
||||||
|
long startTime = System.nanoTime();
|
||||||
|
set.add("Baeldung");
|
||||||
|
set.add("is");
|
||||||
|
set.add("Awesome");
|
||||||
|
long endTime = System.nanoTime();
|
||||||
|
long duration1 = (endTime - startTime);
|
||||||
|
|
||||||
|
Set<String> set2 = new TreeSet<>();
|
||||||
|
startTime = System.nanoTime();
|
||||||
|
set2.add("Baeldung");
|
||||||
|
set2.add("is");
|
||||||
|
set2.add("Awesome");
|
||||||
|
endTime = System.nanoTime();
|
||||||
|
long duration2 = (endTime - startTime);
|
||||||
|
assertTrue(duration1 < duration2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenHashSetAndTreeSet_whenAddDuplicates_thenOnlyUnique() {
|
||||||
|
Set<String> set = new HashSet<>();
|
||||||
|
set.add("Baeldung");
|
||||||
|
set.add("Baeldung");
|
||||||
|
assertTrue(set.size() == 1);
|
||||||
|
|
||||||
|
Set<String> set2 = new TreeSet<>();
|
||||||
|
set2.add("Baeldung");
|
||||||
|
set2.add("Baeldung");
|
||||||
|
assertTrue(set2.size() == 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = ConcurrentModificationException.class)
|
||||||
|
public void givenHashSet_whenModifyWhenIterator_thenFailFast() {
|
||||||
|
Set<String> set = new HashSet<>();
|
||||||
|
set.add("Baeldung");
|
||||||
|
Iterator<String> it = set.iterator();
|
||||||
|
|
||||||
|
while (it.hasNext()) {
|
||||||
|
set.add("Awesome");
|
||||||
|
it.next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue