Java Comparator HackerRank Solution with Explanation

Java Comparator HackerRank Solution

Hello Friends, How are you? Today I am going to solve the HackerRank Comparator Problem with a very easy explanation. In this article, you will get more than one approach to solve this problem. So let's start-

{tocify} $title={Table of Contents}

Java Comparator HackerRank Solution with Explanation

HackerRank Java Comparator Solution - Problem Statement

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 2 fields: a name String and a  score integer.

Given an array of n Player objects, write a comparator that sorts them in order of decreasing score; if 2 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, n, denoting the number of players.
Each of the n subsequent lines contains a player's name and score, respectively.

Constraints
  • 0 <= score <= 1000
  • 2 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 {codeBox}

Sample Output

aleksa 150 amy 100 david 100 aakansha 75 heraldo 50 {codeBox}


Java Comparator HackerRank Solution

Java Comparator - Hacker Rank Solution

Approach I: Java Comparator Solution HackerRank
// ========================
//       Information
// ========================

// Name: Java Comparator HackerRank Problem
// Direct Link: https://www.hackerrank.com/challenges/java-comparator/problem
// Difficulty: Medium
// Max Score: 10
// Language: Java 8

// ========================
//         Solution Start
// ========================

// Java Comparator - Hacker Rank Solution Start

import java.util.*;

// Write your Checker class here
class Checker implements Comparator {
    public int compare(Object o1, Object o2) {
        Player p1 = (Player) o1;
        Player p2 = (Player) o2;
        
        if (p1.score == p2.score) {
            return p1.name.compareTo(p2.name);
        }
        else if (p1.score < p2.score) {
            return 1;
        }
        else {
            return -1;
        }
    }
}

class Player{
    String name;
    int score;
    
    Player(String name, int score){
        this.name = name;
        this.score = score;
    }
}

class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();

        Player[] player = new Player[n];
        Checker checker = new Checker();
        
        for(int i = 0; i < n; i++){
            player[i] = new Player(scan.next(), scan.nextInt());
        }
        scan.close();

        Arrays.sort(player, checker);
        for(int i = 0; i < player.length; i++){
            System.out.printf("%s %s\n", player[i].name, player[i].score);
        }
    }
}

// Java Comparator Hacker Rank Solution END
// MyEduWaves

Approach II: Java Comparator Solution HackerRank
// ========================
//       Information
// ========================

// Name: Java Comparator HackerRank Problem
// Direct Link: https://www.hackerrank.com/challenges/java-comparator/problem
// Difficulty: Medium
// Max Score: 10
// Language: Java 8

// ========================
//         Solution Start
// ========================

// Java Comparator - Hacker Rank Solution Start

import java.util.*;

// Write your Checker class here
class Checker implements Comparator<Player> {

  @Override
  public int compare(Player a1, Player a2) {
    if (a1.score < a2.score) {
      return 1;
    } else if (a1.score > a2.score) {
      return -1;
    } else {
      return a1.name.compareTo(a2.name);
    }
  }
}

class Player{
    String name;
    int score;
    
    Player(String name, int score){
        this.name = name;
        this.score = score;
    }
}

class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();

        Player[] player = new Player[n];
        Checker checker = new Checker();
        
        for(int i = 0; i < n; i++){
            player[i] = new Player(scan.next(), scan.nextInt());
        }
        scan.close();

        Arrays.sort(player, checker);
        for(int i = 0; i < player.length; i++){
            System.out.printf("%s %s\n", player[i].name, player[i].score);
        }
    }
}

// Java Comparator Hacker Rank Solution END
// MyEduWaves


Disclaimer: The above Problem ( Java Comparator ) is generated by Hackerrank but the Solution is Provided by MyEduWaves. This tutorial is only for Educational and Learning purposes. Authority if any of the queries regarding this post or website fill the contact form.

I hope you have understood the solution to this HackerRank Problem. All these three solutions will pass all the test cases. Now visit Java Comparator Hackerrank Problem and try to solve it again.

All the Best!

Post a Comment

Previous Post Next Post