package string_test;
import java.util.Arrays;
/*
当我们想排序一个自定义的数组,Java又没有直接提供它们的比较方式时。我们可以 通过实现接口Comparable并重写compareTo()方法来添加对自定义数组的比较,然后通过Arrays的sort()方法来将这个数组排序。这样就可以快速完成你所需要的排序了。有些同学就要问了:为什么重写了compareTo()方法就可以通过Arrays.sort()来进行排序了,我们可以通过源码来解释:
Student{id=4, name='e', grade=12}
Student{id=1, name='b', grade=40}
Student{id=3, name='d', grade=55}
Student{id=0, name='a', grade=60}
Student{id=2, name='c', grade=80}
*/
public class Test3 {
public static void main(String[] args) {
//*************************************************************************
//直接打印对象的时候将打印对象的toString()方法
Student s0 = new Student();
System.out.println(s0);//Student{id=null, name='null', grade=null}
Student s1 = new Student(1, "刘德华", 5);
System.out.println(s1);//Student{id=1, name='刘德华', grade=5}
//*************************************************************************
Student[] s = new Student[5];
System.out.println(s);//[Lstring_test.Test3$Student;@17327b6
System.out.println(s.toString());//[Lstring_test.Test3$Student;@17327b6
System.out.println(s.getClass());//class [Lstring_test.Test3$Student;
System.out.println(s.getClass().getName());//[Lstring_test.Test3$Student;
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);
}
//*************************************************************************
//Student类中的compareTo()方法的作用
int compare_return1 = s[0].compareTo(s[1]);
System.out.println(compare_return1);//打印结果: -1
int compare_return2 = s[1].compareTo(s[0]);
System.out.println(compare_return2);//打印结果: 1
}
public static class Student implements Comparable<Student> {
private Integer id;
private String name;
private Integer grade;
public Student() {
}
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;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", grade=" + grade +
'}';
}
@Override
public int compareTo(Student o) {
/*
compareTo()方法: 比较两个对象,this当前的比较对象; o表示被比较对象,如:
Student s1 = new Student();
Student s2 = new Student();
s1.compareTo(s2);//其中的s1就相当于当前的比较对象: this, s2就相当于被比较对象: o
*/
return (this.getGrade() > o.getGrade()) ? 1 : -1;
}
}
}
java中的compareTo()方法
最新推荐文章于 2024-07-15 17:41:46 发布
本文通过一个示例介绍了如何在Java中对自定义数组进行排序,当Java没有提供比较方式时,可以通过实现Comparable接口并重写compareTo()方法来实现。博客详细展示了如何创建和初始化Student对象数组,并使用Arrays.sort()进行排序。此外,还解释了compareTo()方法在比较对象时的作用,通过比较返回值理解其工作原理。
摘要由CSDN通过智能技术生成