簡體   English   中英

Java實現接口Comparable,比較手動輸入的數據和生成的數據

[英]Java Implementing interface Comparable, comparing manually entered data with generated data

問題:如何直接將手動輸入的學生信息(如下所示 = 'Elise')與其他學生 Aggergate 標記進行比較,然后對輸出文件頂部具有最大 'Aggergate' 編號的數據進行排序。

 public class Student2 implements Comparable<Student2> {

@Override
   public int compareTo(Student2 o) {
        return Double.valueOf(this.aggerate()).compareTo(Double.valueOf(o.aggerate()));
     if (result > 0) {
         return 1;
         } else if (result < 0) {
         return -1;
         } else {
         return 0;
         }
         }


public static void main(String... args) {
Set<Student2> Stu = new TreeSet<>(
                    Comparator.comparing(Student2::aggregate).reversed()
                              .andThen(Student2::getId));
    Stu.add(new Student2(25321, "Elsie", 51.5, 45.6, 48.5, "3rd", "Proceed To Stage 2"));
    Stu.stream().forEach((c) -> {
        System.out.println(c);
    });
}

public double aggerate() {
    DecimalFormat decFormat = new DecimalFormat("#.#");
    double aggerateMarks = Double.valueOf(decFormat.format((IR101Grades +  IR102Grades) / 2));
    aggerateMarks = Math.round(aggerateMarks * 100.0) / 100.0;
    return aggerateMarks;

}
public String toString() {
    return "\n" + studentID + " |" + studentName + "\n" + "IR101: " + IR101Grades + " | " + "IR102: " + IR102Grades + " |"
            + " Aggregate Mark: " + aggerate() + "\n" + "Class: " + setGrade() + " | " + "Outcome: " + setClass()
            + "\n" + "\n" + "-----------------------------------------------------" + "\n" + "\n";
}

要創建按聚合反向排序的 TreeSet,您可以執行以下操作

Set<Student2> Stu = new TreeSet<>(
                        Comparator.comparing(Student2::aggregate).reversed()
                                  .andThen(Student2::getId));

這樣你的樹就會以相反的順序排列。

注意:萬一兩個學生有相同的聚合,getID 應該確保他們永遠不會被認為是重復的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM