Skip to content

Commit 163ff6d

Browse files
committed
Fixed the "Comparator and Comparable in Java" Article
1 parent ae81119 commit 163ff6d

5 files changed

Lines changed: 33 additions & 7 deletions

File tree

core-java-modules/core-java-lang/src/main/java/com/baeldung/comparable/Player.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public String toString() {
4545

4646
@Override
4747
public int compareTo(Player otherPlayer) {
48-
return (this.getRanking() - otherPlayer.getRanking());
48+
return Integer.compare(getRanking(), otherPlayer.getRanking());
4949
}
5050

5151
}

core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerAgeComparator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class PlayerAgeComparator implements Comparator<Player> {
66

77
@Override
88
public int compare(Player firstPlayer, Player secondPlayer) {
9-
return (firstPlayer.getAge() - secondPlayer.getAge());
9+
return Integer.compare(firstPlayer.getAge(), secondPlayer.getAge());
1010
}
1111

1212
}

core-java-modules/core-java-lang/src/main/java/com/baeldung/comparator/PlayerRankingComparator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class PlayerRankingComparator implements Comparator<Player> {
66

77
@Override
88
public int compare(Player firstPlayer, Player secondPlayer) {
9-
return (firstPlayer.getRanking() - secondPlayer.getRanking());
9+
return Integer.compare(firstPlayer.getRanking(), secondPlayer.getRanking());
1010
}
1111

1212
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.baeldung.comparator;
2+
3+
import org.junit.Test;
4+
5+
import java.util.Arrays;
6+
import java.util.Comparator;
7+
import java.util.List;
8+
9+
import static org.junit.Assert.assertEquals;
10+
11+
public class AvoidingSubtractionUnitTest {
12+
13+
@Test
14+
public void givenTwoPlayers_whenUsingSubtraction_thenOverflow() {
15+
Comparator<Player> comparator = (p1, p2) -> p1.getRanking() - p2.getRanking();
16+
Player player1 = new Player(59, "John", Integer.MAX_VALUE);
17+
Player player2 = new Player(67, "Roger", -1);
18+
19+
List<Player> players = Arrays.asList(player1, player2);
20+
players.sort(comparator);
21+
System.out.println(players);
22+
23+
assertEquals("John", players.get(0).getName());
24+
assertEquals("Roger", players.get(1).getName());
25+
}
26+
}

core-java-modules/core-java-lang/src/test/java/com/baeldung/comparator/Java8ComparatorUnitTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.baeldung.comparator;
22

3-
import static org.junit.Assert.assertEquals;
3+
import org.junit.Before;
4+
import org.junit.Test;
45

56
import java.util.ArrayList;
67
import java.util.Collections;
78
import java.util.Comparator;
89
import java.util.List;
910

10-
import org.junit.Before;
11-
import org.junit.Test;
11+
import static org.junit.Assert.assertEquals;
1212

1313
public class Java8ComparatorUnitTest {
1414

@@ -28,7 +28,7 @@ public void setUp() {
2828
@Test
2929
public void whenComparing_UsingLambda_thenSorted() {
3030
System.out.println("************** Java 8 Comaparator **************");
31-
Comparator<Player> byRanking = (Player player1, Player player2) -> player1.getRanking() - player2.getRanking();
31+
Comparator<Player> byRanking = (Player player1, Player player2) -> Integer.compare(player1.getRanking(), player2.getRanking());
3232

3333
System.out.println("Before Sorting : " + footballTeam);
3434
Collections.sort(footballTeam, byRanking);

0 commit comments

Comments
 (0)