本文主要是介绍Java重写compareTo方法的原理分析和具体实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原理分析
当我们想排序一个自定义的数组,Java又没有直接提供它们的比较方式时。我们可以 通过实现接口Comparable并重写compareTo()方法来添加对自定义数组的比较,然后通过Arrays的sort()方法来将这个数组排序。这样就可以快速完成你所需要的排序了。有些同学就要问了:为什么重写了compareTo()方法就可以通过Arrays.sort()来进行排序了,我们可以通过源码来解释:
我们从源码可以看到调用Arrays.sort()最后会通过Comparable接口的compareTo()对数组进行比较排序
具体实现
package com.example.demo;import java.util.Arrays;public class Coming {public static void main(String[] args){Student[] s=new Student[5];s[0]=new Student(0,"a",60);s[1]=new Student(1,"b",40);s[2]=new Student(2,"c",80);s[3]=new Student(3,"d",55);s[4]=new Student(4,"e",12);Arrays.sort(s);for (Student ss:s) {System.out.println(ss);}}public static class Student implements Comparable<Student>{private Integer id;private String name;private Integer grade;public Student(Integer id, String name, Integer grade) {this.id = id;this.name = name;this.grade = grade;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getGrade() {return grade;}public void setGrade(Integer grade) {this.grade = grade;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", grade=" + grade +'}';}@Overridepublic int compareTo(Student o) {return (this.getGrade()>o.getGrade())?1:-1;}}
}
最后的运行结果为:
这篇关于Java重写compareTo方法的原理分析和具体实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!