java项目-可比接口

0md85ypi  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(309)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
我试图用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);{

        }
    }
}
des4xlb0

des4xlb01#

首先,您不能从抽象类创建对象,所以您需要更改它,或者忘记构造函数,因为您将无法使用它。要比较两个对象,需要创建一个comparator类,以便能够根据要比较的属性比较对象。因此,在本例中,您需要创建两个比较器,一个按度量单位比较,另一个按数量比较。所以应该是这样的:
测量单位比较器:

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,你可以这样比较它们:

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());

它将根据您使用的比较器对列表进行排序。在内部,如果对象相等,comparator类将发送0,如果对象小于,则发送-1,如果对象大于,则发送1。
如果比较字符串属性,它将按字母顺序进行比较。

相关问题