СРАВНИТЕЛЬНЫЙ - Как увидеть, равны ли элементы из объектов? - PullRequest
0 голосов
/ 22 октября 2018

Я разрабатываю программу, в которую я помещаю некоторые элементы в свой объект в ArrayList ... это мой код

import java.util.ArrayList;

public class ListaConcepto {

public static void main(String[] args) {
    // TODO Auto-generated method stub

ArrayList<CompararListas> Lista = new ArrayList<CompararListas>();

    CompararListas obj1 = new CompararListas("abc", 12.25, "lala", 2);
    CompararListas obj2 = new CompararListas("abc", 13.50, "lala", 3);
    CompararListas obj3 = new CompararListas("poc", 12.50, "jaja", 1);

    Lista.add(obj1);
    Lista.add(obj2);
    Lista.add(obj3);

    }    
}

Тогда ... это мой класс с интерфейсом Comparable ... иМне нужен метод для реализации, чтобы увидеть, если элементы равны, а затем распечатать результат.

public class CompararListas implements Comparable<CompararListas> {
    private String referencia;
    private double monto;
    private String descripcion;
    private double NumeroParte;


    public CompararListas(String referencia, double monto, String descripcion, double numeroParte) {
        this.referencia = referencia;
        this.monto = monto;
        this.descripcion = descripcion;
        this.NumeroParte = numeroParte;
    }


    public double getMonto() {
        return monto;
    }


    public void setMonto(double monto) {
        this.monto = monto;
    }


    public String getDescripcion() {
        return descripcion;
    }


    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }


    public double getNumeroParte() {
        return NumeroParte;
    }


    public void setNumeroParte(double numeroParte) {
        NumeroParte = numeroParte;
    }


    public String getReferencia() {
        return referencia;
    }


    public void setReferencia(String referencia) {
        this.referencia = referencia;
    }


    @Override
    public int compareTo(CompararListas o) {
        // TODO Auto-generated method stub
        return 0;
    }

}

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Если вы хотите знать, является ли объект равным другому, вам нужно реализовать метод equals (который не требует от вас объявления какого-либо интерфейса, это может сделать каждый класс)

@Override
public boolean equals(Object o) {
    CompararListas other = (CompararListas) o;
    return ...  
}

с помощью этого метода вы можете вернуть то, что делает эти два объекта равными вам, если вам просто нужно искать referencia.equals(other.referencia) или если вам нужно сравнить каждое свойство, например referencia.equals(other.referencia) && monto == other.monto && ...

Но если вы хотите сравнить элементычтобы сделать что-то вроде упорядочения их там, вы должны реализовать интерфейс Comparable и реализовать метод compareTo

@Override
public int compareTo(CompararListas o) {
    if (NumeroParte < o.NumeroParte)
        return -1;
    else if (NumeroParte > o.NumeroParte)
        return 1;
    return 0;
}

Это позволит объектам сравнивать друг друга и, например, знать, является ли объект «меньшим»чем другие в соответствии с вашими критериями (в этом примере я использовал только NumeroParte и сделал его явным, чтобы его было легко понять, но главное в том, что вы можете использовать любые критерии, которые вы хотите сравнить с объектами и, если хотите, заказать их позже).

Это решения разных проблем, вы должны определить, какая из них лучше для васслучай r.

0 голосов
/ 22 октября 2018

Помните, Comparable предназначен для определения отношений между предметами для целей заказа;это не вполне для равенства.Фактически, не требуется, чтобы любые два сопоставимых элемента должны были * равняться 1005 *.

В вашем случае вы можете заказать по NumeroParte, что означает «Номер детали» и выглядит какразумный выбор.Каждый тип данных имеет свой способ организации.

Ваш метод может выглядеть примерно так:

public int compareTo(ComprarListas o){
    return this.NumeroParte - o.getNumeroParte();
}

, который работает, потому что оба являются целыми числами.

Или соответствующее свойство вашего объекта - вы можете, например, сделать заказ на основе цены.

...