📜  Java番石榴 |带有示例的短类的 compare() 方法(1)

📅  最后修改于: 2023-12-03 14:43:02.085000             🧑  作者: Mango

Java番石榴 | 带有示例的短类的 compare() 方法

在 Java 中,我们可以使用 Comparable 接口来定义我们的类的比较方法。当我们需要对我们的类进行排序或查找操作时,这个接口非常有用。在本文中,我们将讨论如何实现一个带有示例的短类的 compare() 方法来比较两个对象。

示例

首先,让我们看一个示例。假设我们有一个 Fruit 类,它有两个属性:nameprice。现在我们想要按价格对水果进行排序。

public class Fruit implements Comparable<Fruit>{
    private String name;
    private double price;

    public Fruit(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }

    @Override
    public int compareTo(Fruit o) {
        return Double.compare(price, o.price);
    }

    @Override
    public String toString() {
        return "Fruit{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}

在上面的代码中,我们实现了 Comparable 接口并重写了 compareTo() 方法。我们使用 Double.compare() 方法来比较两个水果的价格。

现在,我们可以对 Fruit 类进行排序了:

public class Main {
    public static void main(String[] args) {
        List<Fruit> fruits = new ArrayList<>();
        fruits.add(new Fruit("Apple", 1.99));
        fruits.add(new Fruit("Banana", 0.99));
        fruits.add(new Fruit("Cherry", 2.49));

        Collections.sort(fruits);

        for (Fruit fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

输出结果:

Fruit{name='Banana', price=0.99}
Fruit{name='Apple', price=1.99}
Fruit{name='Cherry', price=2.49}

我们可以看到,水果已经按价格排序了。

实现

让我们来分析一下实现:

@Override
public int compareTo(Fruit o) {
    return Double.compare(price, o.price);
}

我们首先比较两个水果的价格。使用 Double.compare() 方法使我们能够比较两个 double 值,该方法返回一个整数。如果第一个参数小于第二个参数,则返回负整数;如果第一个参数大于第二个参数,则返回正整数;如果两个参数相等,则返回零。

对于我们的比较方法,如果当前水果的价格小于另一个水果,则返回负整数;如果当前水果的价格大于另一个水果,则返回正整数;如果两个水果的价格相等,则返回零。

这就是我们的 compare() 方法的实现方式。

总结

在本文中,我们已经了解了如何实现一个带有示例的短类的 compare() 方法来比较两个对象。我们通过 compareTo() 方法重写了 Comparable 接口,并使用 Double.compare() 方法来比较两个水果的价格。这个方法在需要排序或查找对象时非常有用。