世界杯海报_u20世界杯德国 - jjswlx.com

重写 Java 中的 CompareTo 方法
2025-08-13 15:41:35

compareTo() 方法属于 Java 中的 Comparable 接口。它用于比较两个对象。

它将此对象与指定的对象进行比较以进行排序。如果此对象小于指定对象,则返回负整数,如果此对象等于指定对象,则返回零,如果此对象大于指定对象,则返回正整数。

虽然,Java 提供了几种其他方法来对值进行排序,例如:

Arrays.sort() 方法按升序对数组的元素进行排序。

与 Arrays.sort() 方法类似的 Collections.sort() 方法。我们可以使用这种方法对数组、队列、链表等进行排序。

比较器接口用于根据自定义顺序排序对对象的数组或列表进行排序。例如,对于学生对象的列表,自然顺序可以按学生的入学号码排序。

尽管如此,在现实生活中的应用程序中,我们可能希望按学生的姓氏、名字、出生日期或任何其他此类标准对学生列表进行排序。在这种情况下,我们使用比较器接口。

Comparable 接口用于对用户定义类对象进行排序。

可比较接口仅提供单个排序序列,即我们只能基于单个数据基础对元素进行排序。例如,它可能是年龄、卷号、姓名或其他任何东西。

总而言之,如果我们想根据自然顺序对对象进行排序,我们使用可比较接口的 compareTo() 方法。

然而,如果我们想根据不同对象的属性对对象进行排序或自定义排序,我们使用 Comparator 接口的 compare()。

重写 Java 中的 compareTo() 方法

要根据操作需要对对象进行排序或比较,我们首先需要在类中实现 Comparable 接口,然后重写 compareTo() 方法。

由于我们必须对对象数组进行排序,传统的 array.sort() 方法将不起作用,因此我们调用 Arrays.sort() 方法并传递对象数组。

它将搜索我们是否重写了 compareTo() 方法。由于我们已经重写了 compareTo(),所以对象将根据年龄使用这个 compareTo() 方法进行比较。

package javaexample;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

public class SimpleTesting implements Comparable {

String name;

int age;

// Creating constructor

SimpleTesting(String name, int age) {

this.name = name;

this.age = age;

}

public int getage() {

return age;

}

public String getname() {

return name;

}

public static void main(String[] args) {

// Creating OverrideCompareto class object

SimpleTesting ob[] = new SimpleTesting[4];

// Inserting elements in the objects

ob[0] = new SimpleTesting("Virat", 71);

ob[1] = new SimpleTesting("Rohit", 20);

ob[2] = new SimpleTesting("Dhoni", 11);

ob[3] = new SimpleTesting("Jadeja", 18);

// sorting the array,using overriden method

Arrays.sort(ob);

for (SimpleTesting o : ob) {

// printing the sorted array objects name and age

System.out.println(o.name + " " + o.age);

}

// Creating a dynamic array by using an ArrayList

ArrayList objects = new ArrayList<>();

// creating a new OverrideComparreto object

SimpleTesting newObject1 = new SimpleTesting("Shardul Thakur", 20);

objects.add(newObject1);

// creating a new GFG object

SimpleTesting newObject2 = new SimpleTesting("Jasprit Bumrah", 22);

// inserting the new object into the arraylist

objects.add(newObject2);

// using Collections to sort the arraylist

Collections.sort(objects);

for (SimpleTesting o : objects) {

// printing the sorted objects in arraylist by name and age

System.out.println(o.name + "" + o.age);

}

}

// Overriding compareTo() method

@Override

public int compareTo(SimpleTesting o) {

if (this.age > o.age) {

// if current object is greater --> return 1

return 1;

} else if (this.age < o.age) {

// if current object is greater --> return -1

return -1;

} else {

// if current object is equal to o --> return 0

return 0;

}

}

}

输出:

Dhoni 11

Jadeja 18

Rohit 20

Virat 71

Shardul Thakur20

Jasprit Bumrah22

让我们看另一个比较两个对象年龄的 compareTo() 方法示例。

package java example;

import java.util.*;

public class SimpleTesting implements Comparable {

// Java Program which shows how to override the compareTo() method of comparable

// interface

// implementing Comparable interface

int age;

// Creating constructor

SimpleTesting(int age) {

this.age = age;

}

public static void main(String[] args) {

// Creating a dynamic array by using an arraylist

List list = new ArrayList<>();

// Inserting elements in the objects

list.add(new SimpleTesting(56));

list.add(new SimpleTesting(66));

list.add(new SimpleTesting(21));

Collections.sort(list);

list.forEach(el -> System.out.println(el.age));

}

// Overriding compareTo() method

@Override

public int compareTo(SimpleTesting user) {

return this.age >= user.age ? -1 : 0;

}

}

输出:

66

56

21

在本教程中,我们看到了 Java 中用于排序的不同类型的技术。我们还了解了如何借助示例重写 Java 中的 compareTo() 方法。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe