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