gpt4 book ai didi

java - 一个值类可以有两个 compareTo 方法吗?

转载 作者:行者123 更新时间:2023-11-29 09:48:10 24 4
gpt4 key购买 nike

快速示例是用户名字和姓氏的集合。

一种方法要求我使用名字进行比较,另一种方法使用姓氏。是否可以有两个不同的 compareTo()?

还是我最好创建两个不同的值类?

最佳答案

你可以在java中使用比较器

在这个例子中,我使用 Comparable CompareTo 方法在 fruitName 的基础上比较 Fruit 对象,这里使用 Comparator 比较数量,如果你想使用 fruitDesc 比较这个对象,那么像我为 fruitName 所做的那样再创建一个静态内部类

public class Fruit implements Comparable<Fruit>{

private String fruitName;
private String fruitDesc;
private int quantity;

public Fruit(String fruitName, String fruitDesc, int quantity) {
super();
this.fruitName = fruitName;
this.fruitDesc = fruitDesc;
this.quantity = quantity;
}

public String getFruitName() {
return fruitName;
}
public void setFruitName(String fruitName) {
this.fruitName = fruitName;
}
public String getFruitDesc() {
return fruitDesc;
}
public void setFruitDesc(String fruitDesc) {
this.fruitDesc = fruitDesc;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}

public int compareTo(Fruit compareFruit) {

int compareQuantity = ((Fruit) compareFruit).getQuantity();

//ascending order
return this.quantity - compareQuantity;

//descending order
//return compareQuantity - this.quantity;

}

public static Comparator<Fruit> FruitNameComparator
= new Comparator<Fruit>() {

public int compare(Fruit fruit1, Fruit fruit2) {

String fruitName1 = fruit1.getFruitName().toUpperCase();
String fruitName2 = fruit2.getFruitName().toUpperCase();

//ascending order
return fruitName1.compareTo(fruitName2);

//descending order
//return fruitName2.compareTo(fruitName1);
}

};
}

关于java - 一个值类可以有两个 compareTo 方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com