在Java中完成Comparable接口后Arrays.sort的工作方式

问题描述 投票:0回答:1

该代码是按照学生的姓名降序对进行排序和打印。一班上有n个学生。它们具有三个不同的主题:数据结构,算法设计和分析以及操作系统。所有学生的每个科目的成绩都会提供给您。您必须告诉每个学生在班级中的位置。根据每个学生在课堂上的位置打印他们的姓名。领带根据其掷骰数而被打断。在两个分数相同的学生之间,卷数较少的学生将获得更高的排名。按卷编号的顺序提供输入。我能够实现使一对类根据其标记进行排序并将所有对象存储在数组中的代码。之后,我使用Array.sort对数组进行排序。那么Arrays.sort(pair)如何根据什么对数组进行排序。

java arrays sorting comparable
1个回答
0
投票

在下面的代码中,比较器根据标记进行比较。 Array.sort使用自定义的比较器。

package stackoverflow;

import java.util.Arrays;
import java.util.Comparator;

class Student {
    int rollno, marks;
    String name;

    public Student(int rollno, int marks, String name) {
        this.rollno = rollno;
        this.name = name;
        this.marks = marks;
    }

    public String toString() {
        return this.rollno + " " + this.name + " " + this.marks;
    }
}

class Sortbymarks implements Comparator<Student> {
    public int compare(Student a, Student b) {
        return b.marks - a.marks;
    }
}

public class ArraySort {

    public static void main(String[] args) {
        Student[] arr = { new Student(111, 150, "abc"), new Student(131, 100, "abcd"), new Student(121, 120, "xyz"),
                new Student(191, 150, "txy") };

        System.out.println("Unsorted");
        for (int i = 0; i < arr.length; i++)
            System.out.println(arr[i]);

        Arrays.sort(arr, new Sortbymarks());

        System.out.println("Sorted by marks");
        for (int i = 0; i < arr.length; i++)
            System.out.println(arr[i]);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.