BAEL-1331: Quick Example: Comparator vs Comparable in Java Source code and Unit Tests added.
This commit is contained in:
parent
3319b28b9c
commit
40ceddea2b
51
core-java/src/main/java/com/baeldung/comparable/Player.java
Normal file
51
core-java/src/main/java/com/baeldung/comparable/Player.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package com.baeldung.comparable;
|
||||||
|
|
||||||
|
public class Player implements Comparable<Player> {
|
||||||
|
|
||||||
|
private int ranking;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private int age;
|
||||||
|
|
||||||
|
public Player(int ranking, String name, int age) {
|
||||||
|
this.ranking = ranking;
|
||||||
|
this.name = name;
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRanking() {
|
||||||
|
return ranking;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRanking(int ranking) {
|
||||||
|
this.ranking = ranking;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAge() {
|
||||||
|
return age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAge(int age) {
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(Player otherPlayer) {
|
||||||
|
return (this.getRanking() - otherPlayer.getRanking());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.baeldung.comparable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class PlayerSorter {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
ArrayList<Player> footballTeam = new ArrayList<Player>();
|
||||||
|
Player player1 = new Player(59, "John", 20);
|
||||||
|
Player player2 = new Player(67, "Roger", 22);
|
||||||
|
Player player3 = new Player(45, "Steven", 24);
|
||||||
|
footballTeam.add(player1);
|
||||||
|
footballTeam.add(player2);
|
||||||
|
footballTeam.add(player3);
|
||||||
|
|
||||||
|
System.out.println("Before Sorting : " + footballTeam);
|
||||||
|
Collections.sort(footballTeam);
|
||||||
|
System.out.println("After Sorting : " + footballTeam);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
46
core-java/src/main/java/com/baeldung/comparator/Player.java
Normal file
46
core-java/src/main/java/com/baeldung/comparator/Player.java
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package com.baeldung.comparator;
|
||||||
|
|
||||||
|
public class Player {
|
||||||
|
|
||||||
|
private int ranking;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private int age;
|
||||||
|
|
||||||
|
public Player(int ranking, String name, int age) {
|
||||||
|
this.ranking = ranking;
|
||||||
|
this.name = name;
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRanking() {
|
||||||
|
return ranking;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRanking(int ranking) {
|
||||||
|
this.ranking = ranking;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAge() {
|
||||||
|
return age;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAge(int age) {
|
||||||
|
this.age = age;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.baeldung.comparator;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
public class PlayerAgeComparator implements Comparator<Player> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compare(Player firstPlayer, Player secondPlayer) {
|
||||||
|
return (firstPlayer.getAge() - secondPlayer.getAge());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baeldung.comparator;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class PlayerAgeSorter {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
ArrayList<Player> footballTeam = new ArrayList<Player>();
|
||||||
|
Player player1 = new Player(59, "John", 22);
|
||||||
|
Player player2 = new Player(67, "Roger", 20);
|
||||||
|
Player player3 = new Player(45, "Steven", 24);
|
||||||
|
footballTeam.add(player1);
|
||||||
|
footballTeam.add(player2);
|
||||||
|
footballTeam.add(player3);
|
||||||
|
|
||||||
|
System.out.println("Before Sorting : " + footballTeam);
|
||||||
|
//Instance of PlayerAgeComparator
|
||||||
|
PlayerAgeComparator playerComparator = new PlayerAgeComparator();
|
||||||
|
Collections.sort(footballTeam, playerComparator);
|
||||||
|
System.out.println("After Sorting by age : " + footballTeam);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.baeldung.comparator;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
public class PlayerRankingComparator implements Comparator<Player> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compare(Player firstPlayer, Player secondPlayer) {
|
||||||
|
return (firstPlayer.getRanking() - secondPlayer.getRanking());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baeldung.comparator;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class PlayerRankingSorter {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
ArrayList<Player> footballTeam = new ArrayList<Player>();
|
||||||
|
Player player1 = new Player(59, "John", 22);
|
||||||
|
Player player2 = new Player(67, "Roger", 20);
|
||||||
|
Player player3 = new Player(45, "Steven", 40);
|
||||||
|
footballTeam.add(player1);
|
||||||
|
footballTeam.add(player2);
|
||||||
|
footballTeam.add(player3);
|
||||||
|
|
||||||
|
System.out.println("Before Sorting : " + footballTeam);
|
||||||
|
//Instance of PlayerRankingComparator
|
||||||
|
PlayerRankingComparator playerComparator = new PlayerRankingComparator();
|
||||||
|
Collections.sort(footballTeam, playerComparator);
|
||||||
|
System.out.println("After Sorting by ranking : " + footballTeam);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baeldung.comparable;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class ComparableUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingComparable_thenSortedList() {
|
||||||
|
ArrayList<Player> footballTeam = new ArrayList<Player>();
|
||||||
|
Player player1 = new Player(59, "John", 20);
|
||||||
|
Player player2 = new Player(67, "Roger", 22);
|
||||||
|
Player player3 = new Player(45, "Steven", 24);
|
||||||
|
footballTeam.add(player1);
|
||||||
|
footballTeam.add(player2);
|
||||||
|
footballTeam.add(player3);
|
||||||
|
Collections.sort(footballTeam);
|
||||||
|
assertEquals(footballTeam.get(0).getName(), "Steven");
|
||||||
|
assertEquals(footballTeam.get(2).getRanking(), 67);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package com.baeldung.comparator;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class ComparatorUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingRankingComparator_thenSortedList() {
|
||||||
|
ArrayList<Player> footballTeam = new ArrayList<Player>();
|
||||||
|
Player player1 = new Player(59, "John", 20);
|
||||||
|
Player player2 = new Player(67, "Roger", 22);
|
||||||
|
Player player3 = new Player(45, "Steven", 24);
|
||||||
|
footballTeam.add(player1);
|
||||||
|
footballTeam.add(player2);
|
||||||
|
footballTeam.add(player3);
|
||||||
|
PlayerRankingComparator playerComparator = new PlayerRankingComparator();
|
||||||
|
Collections.sort(footballTeam, playerComparator);
|
||||||
|
assertEquals(footballTeam.get(0).getName(), "Steven");
|
||||||
|
assertEquals(footballTeam.get(2).getRanking(), 67);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingAgeComparator_thenSortedList() {
|
||||||
|
ArrayList<Player> footballTeam = new ArrayList<Player>();
|
||||||
|
Player player1 = new Player(59, "John", 20);
|
||||||
|
Player player2 = new Player(67, "Roger", 22);
|
||||||
|
Player player3 = new Player(45, "Steven", 24);
|
||||||
|
footballTeam.add(player1);
|
||||||
|
footballTeam.add(player2);
|
||||||
|
footballTeam.add(player3);
|
||||||
|
PlayerAgeComparator playerComparator = new PlayerAgeComparator();
|
||||||
|
Collections.sort(footballTeam, playerComparator);
|
||||||
|
assertEquals(footballTeam.get(0).getName(), "John");
|
||||||
|
assertEquals(footballTeam.get(2).getRanking(), 45);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user