diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/compareto/FootballPlayer.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/compareto/FootballPlayer.java index 5d065aa298..173ee32434 100644 --- a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/compareto/FootballPlayer.java +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/compareto/FootballPlayer.java @@ -10,9 +10,13 @@ public class FootballPlayer implements Comparable { this.goalsScored = goalsScored; } + public String getName() { + return name; + } + @Override public int compareTo(FootballPlayer anotherPlayer) { - return this.goalsScored - anotherPlayer.goalsScored; + return Integer.compare(this.goalsScored, anotherPlayer.goalsScored); } @Override diff --git a/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/compareto/FootballPlayerUnitTest.java b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/compareto/FootballPlayerUnitTest.java index 11a8a10585..6abd1e113b 100644 --- a/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/compareto/FootballPlayerUnitTest.java +++ b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/compareto/FootballPlayerUnitTest.java @@ -2,6 +2,10 @@ package com.baeldung.compareto; import org.junit.jupiter.api.Test; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.TreeSet; @@ -11,7 +15,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class FootballPlayerUnitTest { @Test - public void givenInconsistentCompareToAndEqualsImpl_whenUsingSortedSet_thenElementsAreNotAdded() { + public void givenInconsistentCompareToAndEqualsImpl_whenUsingSortedSet_thenSomeElementsAreNotAdded() { FootballPlayer messi = new FootballPlayer("Messi", 800); FootballPlayer ronaldo = new FootballPlayer("Ronaldo", 800); @@ -23,11 +27,24 @@ public class FootballPlayerUnitTest { assertThat(set).doesNotContain(ronaldo); } + @Test + public void givenCompareToImpl_whenUsingCustomComparator_thenComparatorLogicIsApplied() { + FootballPlayer ronaldo = new FootballPlayer("Ronaldo", 900); + FootballPlayer messi = new FootballPlayer("Messi", 800); + FootballPlayer modric = new FootballPlayer("Modric", 100); + + List players = Arrays.asList(ronaldo, messi, modric); + Comparator nameComparator = Comparator.comparing(FootballPlayer::getName); + Collections.sort(players, nameComparator); + + assertThat(players).containsExactly(messi, modric, ronaldo); + } + @Test public void givenCompareToImpl_whenSavingElementsInTreeMap_thenKeysAreSortedUsingCompareTo() { FootballPlayer ronaldo = new FootballPlayer("Ronaldo", 900); FootballPlayer messi = new FootballPlayer("Messi", 800); - FootballPlayer modric = new FootballPlayer("modric", 100); + FootballPlayer modric = new FootballPlayer("Modric", 100); Map players = new TreeMap<>(); players.put(ronaldo, "forward"); diff --git a/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/compareto/HandballPlayerUnitTest.java b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/compareto/HandballPlayerUnitTest.java index cd017a5c0c..143286f15f 100644 --- a/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/compareto/HandballPlayerUnitTest.java +++ b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/compareto/HandballPlayerUnitTest.java @@ -2,13 +2,7 @@ package com.baeldung.compareto; import org.junit.jupiter.api.Test; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.TreeSet; - -import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; public class HandballPlayerUnitTest {