From 344dac383527ce3ae122f351733c38c91d8aa487 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Fri, 30 Apr 2021 07:31:17 +0200 Subject: [PATCH] BAEL-4944: Update code samples for the Removing all duplicates from a List in Java (#10717) Co-authored-by: Krzysztof Woyke --- .../JavaCollectionCleanupUnitTest.java | 46 ++++++++++++++----- .../java8/Java8CollectionCleanupUnitTest.java | 8 ++-- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collections/JavaCollectionCleanupUnitTest.java b/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collections/JavaCollectionCleanupUnitTest.java index 96813df862..5ef08a9337 100644 --- a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collections/JavaCollectionCleanupUnitTest.java +++ b/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/collections/JavaCollectionCleanupUnitTest.java @@ -1,11 +1,14 @@ package com.baeldung.collections; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.containsInRelativeOrder; import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertThat; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import org.apache.commons.collections4.CollectionUtils; @@ -22,7 +25,7 @@ public class JavaCollectionCleanupUnitTest { // tests - removing nulls @Test - public final void givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect() { + public void givenListContainsNulls_whenRemovingNullsWithPlainJava_thenCorrect() { final List list = Lists.newArrayList(null, 1, null); while (list.remove(null)) ; @@ -31,7 +34,7 @@ public class JavaCollectionCleanupUnitTest { } @Test - public final void givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect() { + public void givenListContainsNulls_whenRemovingNullsWithPlainJavaAlternative_thenCorrect() { final List list = Lists.newArrayList(null, 1, null); list.removeAll(Collections.singleton(null)); @@ -39,7 +42,7 @@ public class JavaCollectionCleanupUnitTest { } @Test - public final void givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect() { + public void givenListContainsNulls_whenRemovingNullsWithGuavaV1_thenCorrect() { final List list = Lists.newArrayList(null, 1, null); Iterables.removeIf(list, Predicates.isNull()); @@ -47,7 +50,7 @@ public class JavaCollectionCleanupUnitTest { } @Test - public final void givenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect() { + public void givenListContainsNulls_whenRemovingNullsWithGuavaV2_thenCorrect() { final List list = Lists.newArrayList(null, 1, null, 2, 3); final List listWithoutNulls = Lists.newArrayList(Iterables.filter(list, Predicates.notNull())); @@ -55,7 +58,7 @@ public class JavaCollectionCleanupUnitTest { } @Test - public final void givenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect() { + public void givenListContainsNulls_whenRemovingNullsWithCommonsCollections_thenCorrect() { final List list = Lists.newArrayList(null, 1, 2, null, 3, null); CollectionUtils.filter(list, PredicateUtils.notNullPredicate()); @@ -65,19 +68,38 @@ public class JavaCollectionCleanupUnitTest { // tests - remove duplicates @Test - public final void givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() { - final List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0); + public void givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() { + final List listWithDuplicates = Lists.newArrayList(5, 0, 3, 1, 2, 3, 0, 0); final List listWithoutDuplicates = new ArrayList<>(new HashSet<>(listWithDuplicates)); - assertThat(listWithoutDuplicates, hasSize(4)); + assertThat(listWithoutDuplicates, hasSize(5)); + assertThat(listWithoutDuplicates, containsInAnyOrder(5, 0, 3, 1, 2)); } @Test - public final void givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect() { - final List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0); - final List listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates)); + public void givenListContainsDuplicates_whenRemovingDuplicatesPreservingOrderWithPlainJava_thenCorrect() { + final List listWithDuplicates = Lists.newArrayList(5, 0, 3, 1, 2, 3, 0, 0); + final List listWithoutDuplicates = new ArrayList<>(new LinkedHashSet<>(listWithDuplicates)); - assertThat(listWithoutDuplicates, hasSize(4)); + assertThat(listWithoutDuplicates, hasSize(5)); + assertThat(listWithoutDuplicates, containsInRelativeOrder(5, 0, 3, 1, 2)); } + @Test + public void givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect() { + final List listWithDuplicates = Lists.newArrayList(5, 0, 3, 1, 2, 3, 0, 0); + final List listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates)); + + assertThat(listWithoutDuplicates, hasSize(5)); + assertThat(listWithoutDuplicates, containsInAnyOrder(5, 0, 3, 1, 2)); + } + + @Test + public void givenListContainsDuplicates_whenRemovingDuplicatesPreservingOrderWithGuava_thenCorrect() { + final List listWithDuplicates = Lists.newArrayList(5, 0, 3, 1, 2, 3, 0, 0); + final List listWithoutDuplicates = Lists.newArrayList(Sets.newLinkedHashSet(listWithDuplicates)); + + assertThat(listWithoutDuplicates, hasSize(5)); + assertThat(listWithoutDuplicates, containsInRelativeOrder(5, 0, 3, 1, 2)); + } } diff --git a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java b/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java index ef7b642f89..5eb75f5cad 100644 --- a/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java +++ b/core-java-modules/core-java-collections-list/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertThat; @@ -40,10 +41,11 @@ public class Java8CollectionCleanupUnitTest { @Test public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() { - final List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3); - final List listWithoutDuplicates = listWithDuplicates.parallelStream().distinct().collect(Collectors.toList()); + final List listWithDuplicates = Lists.newArrayList(5, 0, 3, 1, 2, 3, 0, 0); + final List listWithoutDuplicates = listWithDuplicates.stream().distinct().collect(Collectors.toList()); - assertThat(listWithoutDuplicates, hasSize(3)); + assertThat(listWithoutDuplicates, hasSize(5)); + assertThat(listWithoutDuplicates, containsInAnyOrder(5, 0, 3, 1, 2)); } }