java-项目-可比较的界面
java-project -Comparable Interface
我正在尝试在 java 中创建一个比较某些产品的方法。我需要先按计量单位比较它们,然后再按数量进行比较,但我不知道该怎么做。我需要使用 object.equals 吗?
我会把我的代码放在这里。
public abstract class Produs implements Comparable {
private String tipProdus;
private String unitateMasura;
private int cantitate;
public Produs(String tipProdus, String unitateMasura, int cantitate) {
super();
this.tipProdus = tipProdus;
this.unitateMasura = unitateMasura;
this.cantitate = cantitate;
}
public Object genereazaDescriere() {
Object String = null;
return String;
}
public void compareTo() {
tipProdus.equals(unitateMasura);{
}
}
}
首先,您不能从抽象创建对象 class,因此您需要更改它,或者干脆忘记那个构造函数,因为您将无法使用它。
要比较两个对象,您需要创建一个比较器 class,这样您就可以根据您想要的属性来比较对象。
因此,在这种情况下,您需要创建两个比较器,一个用于按计量单位进行比较,另一个用于按数量进行比较。
所以它会是这样的:
按计量单位比较:
public class UnitOfMeasureProdusComparator implements Comparator<Produs> {
@Override
public int compare(Produs p1, Produs p2) {
return p1.getUnitateMasura().compareTo(p2.getUnitateMasura());
}
数量比较器:
public class QuantityProdusComparator implements Comparator<Produs> {
@Override
public int compare(Produs p1, Produs p2) {
return p1.getCantitate().compareTo(p2.getCantitate());
}
现在,例如,如果您有 Produs 对象的数组列表,您可以像这样比较它们:
ArrayList<Produs> products = new ArrayList<>();
Produs p1 = new Produs("x", "centimeters", 5);
Produs p2 = new Produs("y", "meters", 4);
products.add(p1,p2);
//now you have two objects created so if you want to sort them by there quantity u can do it like this:
Collections.sort(productos, new QuantityProdusComparator());
它将根据您使用的比较器对列表进行排序。
在内部,如果对象相等,比较器 class 将发送 0,如果对象小于则发送 -1,如果对象大于则发送 1。
如果您比较字符串属性,它将按字母顺序进行。
我正在尝试在 java 中创建一个比较某些产品的方法。我需要先按计量单位比较它们,然后再按数量进行比较,但我不知道该怎么做。我需要使用 object.equals 吗? 我会把我的代码放在这里。
public abstract class Produs implements Comparable {
private String tipProdus;
private String unitateMasura;
private int cantitate;
public Produs(String tipProdus, String unitateMasura, int cantitate) {
super();
this.tipProdus = tipProdus;
this.unitateMasura = unitateMasura;
this.cantitate = cantitate;
}
public Object genereazaDescriere() {
Object String = null;
return String;
}
public void compareTo() {
tipProdus.equals(unitateMasura);{
}
}
}
首先,您不能从抽象创建对象 class,因此您需要更改它,或者干脆忘记那个构造函数,因为您将无法使用它。 要比较两个对象,您需要创建一个比较器 class,这样您就可以根据您想要的属性来比较对象。 因此,在这种情况下,您需要创建两个比较器,一个用于按计量单位进行比较,另一个用于按数量进行比较。 所以它会是这样的:
按计量单位比较:
public class UnitOfMeasureProdusComparator implements Comparator<Produs> {
@Override
public int compare(Produs p1, Produs p2) {
return p1.getUnitateMasura().compareTo(p2.getUnitateMasura());
}
数量比较器:
public class QuantityProdusComparator implements Comparator<Produs> {
@Override
public int compare(Produs p1, Produs p2) {
return p1.getCantitate().compareTo(p2.getCantitate());
}
现在,例如,如果您有 Produs 对象的数组列表,您可以像这样比较它们:
ArrayList<Produs> products = new ArrayList<>();
Produs p1 = new Produs("x", "centimeters", 5);
Produs p2 = new Produs("y", "meters", 4);
products.add(p1,p2);
//now you have two objects created so if you want to sort them by there quantity u can do it like this:
Collections.sort(productos, new QuantityProdusComparator());
它将根据您使用的比较器对列表进行排序。 在内部,如果对象相等,比较器 class 将发送 0,如果对象小于则发送 -1,如果对象大于则发送 1。
如果您比较字符串属性,它将按字母顺序进行。