【问题标题】:How to sort an array of objects in Java in field level for grade comparison?java - 如何在字段级别对Java中的对象数组进行排序以进行成绩比较?
【发布时间】:2012-07-11 01:37:50
【问题描述】:

在 Java 中,

Class StudentProgress
{
        String Name;
        String Grade;
        /* CTOR goes here */
}

main class
{
     main method()
     {
         StudentProgress arrayofObjects[100000];
     }
}

如果成绩是 D-,C-,B-,A-,A,B,C,D,A+,B+,C+,D+。我需要对这些对象进行排序,我怎样才能有效地做到这一点 在此先感谢

【问题讨论】:

  • 必须是数组吗?可能是List
  • 这是作业问题,对吗?

标签: java string sorting compare


【解决方案1】:

最好的方法是让你的类实现Comparable。这样的事情会起作用:

public class StudentProgress implements Comparable<StudentProgress> {

    String name;
    String grade;
    char baseGrade;    // Just the letter
    int gradeModifier; // -1 0 or +1 - done to make sorting easier

    public StudentProgress( String name, String grade ) {
        this.name = name;
        this.grade = grade;
        // Extract the grade parts for use when comparing
        baseGrade = grade.charAt( 0 );
        gradeModifier = grade.length() == 1 ? 0 : Integer.parseInt( grade.charAt( 1 ) + "1" );
    }

    public int compareTo( StudentProgress o ) {
        return baseGrade == o.baseGrade ? gradeModifier - o.gradeModifier : baseGrade - o.baseGrade;
    }
}

然后进行排序,只需使用Arrays.sort() 方法:

StudentProgress[] array = ...;
Arrays.sort(array);

如果你不希望你的类实现这个接口,你可以为排序调用提供一个独立的Comparator

【讨论】:

    【解决方案2】:

    您要查找的类是 Comparable 和 Comparator。

    本教程将为您提供指导,http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 2021-04-15
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多