import java.util.*;
public class Student implements Comparable {
private final long am; // Αριθμός Μητρώου
private final String name;
private int grade;
public Student(long am, String name, int grade) {
this.am = am;
this.name = name;
this.grade = grade;
}
public long getAm() {
return am;
}
public String getName() {
return name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
@Override
public String toString() {
return "Student {am = " + am + ", name = " + name + ", grade = " + grade + "}";
}
@Override
public int compareTo(Object o) {
Student otherStudent = (Student)o;
if (this.am == otherStudent.am)
return 0;
else if (this.am < otherStudent.am)
return -1;
else
return 1;
}
public static void main(String[] args) {
Student s1 = new Student(1, "Παπαμιχαήλ Δημήτριος", 16);
System.out.println(s1);
Student s2 = new Student(2, "Βουγιουκλάκη Αλίκη", 10);
System.out.println(s2);
List students = new ArrayList(List.of(s1, s2));
System.out.println(students);
students.sort(new StudentNameComparator());
System.out.println(students);
students.sort(new StudentGradeComparator().reversed());
System.out.println(students);
}
}
class StudentNameComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Student s1 = (Student)o1;
Student s2 = (Student)o2;
return s1.getName().compareTo(s2.getName());
}
}
class StudentGradeComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Student s1 = (Student)o1;
Student s2 = (Student)o2;
return Integer.compare(s1.getGrade(), s2.getGrade());
}
}