Hackerrank Java Comparator Solution
1 min read

Hackerrank Java Comparator Solution

Hackerrank Java Comparator Solution

Comparators are used to compare two objects. In this challenge, you'll create a comparator and use it to sort an array.

The Player class is provided for you in your editor. It has  fields: a  String and a  integer.

Given an array of  Player objects, write a comparator that sorts them in order of decreasing score; if  or more players have the same score, sort those players alphabetically by name. To do this, you must create a Checker class that implements the Comparator interface, then write an int compare(Player a, Player b) method implementing the Comparator.compare(T o1, T o2) method.

Input Format

Input from stdin is handled by the locked stub code in the Solution class.

The first line contains an integer, , denoting the number of players.
Each of the  subsequent lines contains a player's  and , respectively.

Constraints

  • players can have the same name.
  • Player names consist of lowercase English letters.

Output Format

You are not responsible for printing any output to stdout. The locked stub code in Solution will create a Checker object, use it to sort the Player array, and print each sorted element.

Sample Input

5
amy 100
david 100
heraldo 50
aakansha 75
aleksa 150

Sample Output

aleksa 150
amy 100
david 100
aakansha 75
heraldo 50

Solution in java8

Approach 1.



class Checker implements Comparator<Player>{
    @Override
    public int compare (Player p1,Player p2){
        if(p1.score==p2.score){
            return p1.name.compareTo(p2.name);
        }
        else{
            return p2.score-p1.score;
        }
    }
}


Approach 2.



class Checker implements Comparator {
    public int compare(Object o1,  Object o2) {
        Player p1 = (Player) o1;
        Player p2 = (Player) o2;
        if (p2.score - p1.score == 0) return p1.name.compareTo(p2.name);
        return p2.score - p1.score;
    }
}

Approach 3.



// Write your Checker class here
class Checker implements Comparator<Player> {
    @Override
    public int compare(Player o1, Player o2) {
        if (o1.score == o2.score) {
            return o1.name.compareTo(o2.name);
        }
        return o2.score - o1.score;
    }
}

Enjoying these posts? Subscribe for more


Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

That's okay. But without advertising-income, we can't keep making this site awesome.

We don't have any banner, Flash, animation, obnoxious sound, or popup ad. We do not implement these annoying types of ads!

We need money to operate the site, and almost all of it comes from our online advertising.

Please add thepoorcoder.com to your ad blocking whitelist or disable your adblocking software.

×