Java Sort HackerRank Solution

0

You are given a list of student information: ID, FirstName, and CGPA. Your task is to rearrange them according to their CGPA in decreasing order. If two student have the same CGPA, then arrange them according to their first name in alphabetical order. If those two students also have the same first name, then order them according to their ID. No two students have the same ID.

Hint: You can use comparators to sort a list of objects. 

Input Format

The first line of input contains an integer N, representing the total number of students. The next N lines contain a list of student information in the following structure:


  
ID Name CGPA

 


The name contains only lowercase English letters. The ID contains only integer numbers without leading zeros. The CGPA will contain, at most, 2 digits after the decimal point.

Output Format

After rearranging the students according to the above rules, print the first name of each student on a separate line.

Sample Input


  
 5

 33 Rumpa 3.68

 85 Ashis 3.85

 56 Samiha 3.75

 19 Samara 3.75

 22 Fahim 3.76

 


Sample Output


 
Ashis

 Fahim

 Samara

 Samiha

 Rumpa

 


Java Sort HackerRank Solution



 import java.util.*;


 class Student{

private int id;

private String fname;

private double cgpa;

public Student(int id, String fname, double cgpa) {

super();

this.id = id;

this.fname = fname;

this.cgpa = cgpa;

}

public int getId() {

return id;

}

public String getFname() {

return fname;

}

public double getCgpa() {

return cgpa;

}

 }



 public class Solution

 {

public static void main(String[] args){

Scanner in = new Scanner(System.in);

int testCases = Integer.parseInt(in.nextLine());

List<Student> studentList = new ArrayList<Student>();

while(testCases>0){

int id = in.nextInt();

String fname = in.next();

double cgpa = in.nextDouble();

Student st = new Student(id, fname, cgpa);

studentList.add(st);

testCases--;

}

        

        Collections.sort(studentList, new StudentComparator());

      

      for(Student st: studentList){

System.out.println(st.getFname());

}

}

 }


 class StudentComparator implements Comparator<Student>{

    

    double epsilon = 0.001;

    

    @Override

    public int compare(Student s1, Student s2){

        if(Math.abs(s1.getCgpa()- s2.getCgpa())> epsilon){

            return s1.getCgpa()<s2.getCgpa()?1:-1;

            //100 99

        }

        

        else if(!s1.getFname().equals(s2.getFname()))

        {

            return s1.getFname().compareTo(s2.getFname());

        }

        else{

            return s1.getId() - s2.getId();

        }

        }

        }




A comparator interface is used to order the objects of user-defined classes. A comparator object is capable of comparing two objects of the same class.


Happy Learning by shouterfolk

Post a Comment

0 Comments
* Please Don't Spam Here. All the Comments are Reviewed by Admin.
Post a Comment (0)
Our website uses cookies to enhance your experience. Learn More
Accept !