• + 0 comments

    import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner;

    public class Solution {

    public static void main(String[] args) {
    
        List<Student> students = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
    
        int customersTotalCount = scanner.nextInt();
    
        for (int i = 0; i < customersTotalCount; i++) {
    
            int customerId = scanner.nextInt();
            String custName = scanner.next();
            double cgpa = scanner.nextDouble();
    
            students.add(new Student(customerId, custName, cgpa));
        }
    
        students.sort(new GPAComparator());
        students.forEach((student) -> System.out.println(student.getName()));
    
    }
    
    
    public static class Student {
    
        public Student(int id, String name, double cgpa) {
            this.id = id;
            this.name = name;
            this.cgpa = cgpa;
        }
    
        public int getId() {
            return id;
        }
    
    
        public String getName() {
            return name;
        }
    
        public double getCgpa() {
            return cgpa;
        }
    
        private int id;
        private String name;
        private double cgpa;
    
    
    }
    
    static class GPAComparator implements Comparator<Student> {
        public int compare(Student s1, Student s2) {
            int compareCGPA = Double.compare(s2.getCgpa(), s1.getCgpa());
            int n = s1.getName().compareTo(s2.getName());
            if (compareCGPA != 0) {
                return compareCGPA;
            } else if (n != 0) {
                return n;
            } else {
                return Double.compare(s1.getId(), s2.getId());
            }
        }
    }
    

    }