From 555409b78ed9bbfa43734ac9764f2b29fbcf4490 Mon Sep 17 00:00:00 2001 From: caroline Date: Fri, 1 Feb 2019 21:34:08 +0100 Subject: [PATCH] Source Code for BAEL-2534 : Determine if all elements are the same in a Java list --- core-java-collections-list/pom.xml | 7 -- .../VerifyAllEqualListElements.java | 21 ++++- .../VerifyAllEqualListElementsUnitTest.java | 79 ++++++++++++++----- 3 files changed, 78 insertions(+), 29 deletions(-) diff --git a/core-java-collections-list/pom.xml b/core-java-collections-list/pom.xml index 103508b948..ee99e470d0 100644 --- a/core-java-collections-list/pom.xml +++ b/core-java-collections-list/pom.xml @@ -36,12 +36,6 @@ ${lombok.version} provided - - org.junit.jupiter - junit-jupiter-api - ${junit-jupiter.version} - test - @@ -50,6 +44,5 @@ 1.7.0 3.11.1 1.16.12 - 5.0.0-M4 diff --git a/core-java-collections-list/src/main/java/com/baeldung/allequalelements/VerifyAllEqualListElements.java b/core-java-collections-list/src/main/java/com/baeldung/allequalelements/VerifyAllEqualListElements.java index 033245f239..7c9b4a5b9f 100644 --- a/core-java-collections-list/src/main/java/com/baeldung/allequalelements/VerifyAllEqualListElements.java +++ b/core-java-collections-list/src/main/java/com/baeldung/allequalelements/VerifyAllEqualListElements.java @@ -1,5 +1,7 @@ package com.baeldung.allequalelements; +import java.util.Collections; +import java.util.HashSet; import java.util.List; import org.apache.commons.collections4.IterableUtils; import com.google.common.base.Predicate; @@ -9,21 +11,32 @@ public class VerifyAllEqualListElements { public boolean verifyAllEqualUsingALoop(List list) { for (String s : list) { - if(!s.equals(list.get(0))) + if (!s.equals(list.get(0))) return false; } return true; } + public boolean verifyAllEqualUsingHashSet(List list) { + return new HashSet(list).size() <= 1; + } + + public boolean verifyAllEqualUsingFrequency(List list) { + return list.isEmpty() || Collections.frequency(list, list.get(0)) == list.size(); + } + public boolean verifyAllEqualUsingStream(List list) { - return list.stream().distinct().limit(2).count() <= 1; + return list.stream() + .distinct() + .limit(2) + .count() <= 1; } public boolean verifyAllEqualAnotherUsingStream(List list) { - return list.isEmpty() || list.stream().allMatch(list.get(0)::equals); + return list.isEmpty() || list.stream() + .allMatch(list.get(0)::equals); } - public boolean verifyAllEqualUsingGuava(List list) { return Iterables.all(list, new Predicate() { public boolean apply(String s) { diff --git a/core-java-collections-list/src/test/java/com/baeldung/allequalelements/VerifyAllEqualListElementsUnitTest.java b/core-java-collections-list/src/test/java/com/baeldung/allequalelements/VerifyAllEqualListElementsUnitTest.java index 6ebb724580..12c9b0ebeb 100644 --- a/core-java-collections-list/src/test/java/com/baeldung/allequalelements/VerifyAllEqualListElementsUnitTest.java +++ b/core-java-collections-list/src/test/java/com/baeldung/allequalelements/VerifyAllEqualListElementsUnitTest.java @@ -2,6 +2,7 @@ package com.baeldung.allequalelements; import org.junit.Test; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static org.junit.Assert.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -10,30 +11,17 @@ public class VerifyAllEqualListElementsUnitTest { private static List distinctList = new ArrayList<>(); - static { - distinctList.add(new String("Jack")); - distinctList.add(new String("James")); - distinctList.add(new String("Sam")); - } - private static List notAllEqualList = new ArrayList<>(); - static { - notAllEqualList.add(new String("Jack")); - notAllEqualList.add(new String("James")); - notAllEqualList.add(new String("Sam")); - notAllEqualList.add(new String("James")); - } - private static List emptyList = new ArrayList<>(); private static List allEqualList = new ArrayList<>(); static { - allEqualList.add(new String("Jack")); - allEqualList.add(new String("Jack")); - allEqualList.add(new String("Jack")); - allEqualList.add(new String("Jack")); + distinctList = Arrays.asList("Jack", "James", "Sam"); + notAllEqualList = Arrays.asList("Jack", "James", "Sam", "James"); + emptyList = Arrays.asList(); + allEqualList = Arrays.asList("Jack", "Jack", "Jack", "Jack"); } private static VerifyAllEqualListElements verifyAllEqualListElements = new VerifyAllEqualListElements(); @@ -66,6 +54,62 @@ public class VerifyAllEqualListElementsUnitTest { assertTrue(allEqual); } + @Test + public void verifyAllEqualUsingHashSet_whenUsingDistinctList_thenReturnFalse() { + boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingHashSet(distinctList); + + assertFalse(allEqual); + } + + @Test + public void verifyAllEqualUsingHashSet_whenNotAllEqualList_thenReturnFalse() { + boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingHashSet(notAllEqualList); + + assertFalse(allEqual); + } + + @Test + public void verifyAllEqualUsingHashSet_whenEmptyList_thenReturnTrue() { + boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingHashSet(emptyList); + + assertTrue(allEqual); + } + + @Test + public void verifyAllEqualUsingHashSet_whenAllEqualList_thenReturnTrue() { + boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingHashSet(allEqualList); + + assertTrue(allEqual); + } + + @Test + public void verifyAllEqualUsingFrequency_whenUsingDistinctList_thenReturnFalse() { + boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingFrequency(distinctList); + + assertFalse(allEqual); + } + + @Test + public void verifyAllEqualUsingFrequency_whenNotAllEqualList_thenReturnFalse() { + boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingFrequency(notAllEqualList); + + assertFalse(allEqual); + } + + @Test + public void verifyAllEqualUsingFrequency_whenEmptyList_thenReturnTrue() { + boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingFrequency(emptyList); + + assertTrue(allEqual); + } + + @Test + public void verifyAllEqualUsingFrequency_whenAllEqualList_thenReturnTrue() { + boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingFrequency(allEqualList); + + assertTrue(allEqual); + } + @Test public void verifyAllEqualUsingStream_whenUsingDistinctList_thenReturnFalse() { boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingStream(distinctList); @@ -122,7 +166,6 @@ public class VerifyAllEqualListElementsUnitTest { assertTrue(allEqual); } - @Test public void verifyAllEqualUsingGuava_whenUsingDistinctList_thenReturnFalse() { boolean allEqual = verifyAllEqualListElements.verifyAllEqualUsingGuava(distinctList);