From 4eb3f44b14ca81a8f7ed9d6f665f50f104f325ce Mon Sep 17 00:00:00 2001 From: maibin Date: Tue, 25 Apr 2017 03:29:26 +0200 Subject: [PATCH] HashSet and TreeSet comparison (#1698) --- .../java/com/baeldung/java/set/SetTest.java | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/java/set/SetTest.java diff --git a/core-java/src/test/java/com/baeldung/java/set/SetTest.java b/core-java/src/test/java/com/baeldung/java/set/SetTest.java new file mode 100644 index 0000000000..59e135283f --- /dev/null +++ b/core-java/src/test/java/com/baeldung/java/set/SetTest.java @@ -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 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 set = new TreeSet<>(); + set.add("Baeldung"); + set.add("is"); + set.add(null); + } + + @Test + public void givenHashSet_whenAddNullObject_thenOK() { + Set set = new HashSet<>(); + set.add("Baeldung"); + set.add("is"); + set.add(null); + assertEquals(3, set.size()); + } + + @Test + public void givenHashSetAndTreeSet_whenAddObjects_thenHashSetIsFaster() { + Set 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 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 set = new HashSet<>(); + set.add("Baeldung"); + set.add("Baeldung"); + assertTrue(set.size() == 1); + + Set set2 = new TreeSet<>(); + set2.add("Baeldung"); + set2.add("Baeldung"); + assertTrue(set2.size() == 1); + } + + @Test(expected = ConcurrentModificationException.class) + public void givenHashSet_whenModifyWhenIterator_thenFailFast() { + Set set = new HashSet<>(); + set.add("Baeldung"); + Iterator it = set.iterator(); + + while (it.hasNext()) { + set.add("Awesome"); + it.next(); + } + } +}