22 Aralık 2019 Pazar

Java Sorting

ID, FirstName, and CGPA bilgileri olan student listesi verilmis olsun. Bizim amacimiz CGPA lerini azalan sirada siralamak. Eger 2 ogrencinin CGPA leri esitse o zaman firstnamelerini alfabetik siraya gore siralayalim. Eger ayni isimlere sahiplerse ID lerine gore siralayalim. Her ogrencinin farkli ID si oldugu icin sorun olmaz. 
Ornek Input 

5
33 Rumpa 3.68
85 Ashis 3.85
56 Samiha 3.75
19 Samara 3.75

22 Fahim 3.76

Output

Ashis
Fahim
Samara
Samiha

Rumpa

Burada 5 kac tane input olacagi.

Bu soruya asagidaki koddaki boslugu tamamlayalim.

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;
 }
}

//Complete the code
public class Solution
{
 public static void main(String[] args){
  Scanner in = new Scanner(System.in);
  int testCases = Integer.parseInt(in.nextLine());
  
  List studentList = new ArrayList();
  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, Comparator.comparing(Student :: getCgpa).reversed().
              thenComparing(Student :: getFname).thenComparing(Student :: getId)); 

       for(Student st: studentList){
   System.out.println(st.getFname());
  }
 }
}

Hiç yorum yok:

Yorum Gönder