3

ジャワでは、

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+のような場合。これらのオブジェクトをソートする必要があります。どうすれば効率的にソートできますか よろしくお願いします

4

2 に答える 2

6

あなたの最善のアプローチは、あなたのクラスに実装させること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クラスでこのインターフェースを実装したくない場合は、ソート呼び出しにスタンドアロンを提供できます

于 2012-07-11T01:55:30.007 に答える
3

探しているクラスは Comparable と Comparator です。

このチュートリアルでは、http: //www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/ について説明します。

幸運を!

于 2012-07-11T01:41:44.277 に答える