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。

如果您比较字符串属性,它将按字母顺序进行。