有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 2 楼答案

    最好的方法是让类实现^{}。像这样的方法会奏效:

    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;
        }
    }
    

    然后,要排序,只需使用^{}方法:

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

    如果不想让类实现这个接口,可以为sort调用提供一个独立的Comparator