Java коллекция собственных объектов и .equals - PullRequest
1 голос
/ 12 сентября 2011

У меня есть свой собственный класс, который является объектом с набором других объектов внутри него.то есть

public class Curve{


@Override
public Collection<CurvePoint> getCurvePoints() {
return curvePoints;
}

@Override
public boolean equals(Object other) {
    if (other instanceof Curve) {
        Curve otherCurve = (Curve) other;
        return getCurvePoints().equals(otherCurve.getCurvePoints());
    }
    return false;
}        
}

, где класс CurvePoint подразумевает Comparable, а также переопределяет метод equals следующим образом:

public class CurvePoint implements ICurvePoint, Comparable<CurvePoint> {

@Override
    public int compareTo(CurvePointother) {

        return getSnapDate().compareTo(other.getSnapDate());

    }
@Override
    public boolean equals(Object other) {
        if (other instanceof CurvePoint) {
            CurvePointotherPoint = (CurvePoint) other;

            return (getId().equals(otherPoint.getId())
                    && getBid().getRate() == otherPoint.getBid().getRate()
                    && getOffer().getRate() == otherPoint.getOffer().getRate() && getMid()
                    .getRate() == otherPoint.getMid().getRate());
        }
        return false;
    }

}

Мой вопрос: когда у меня есть 2 коллекции Curve, как мне сравнитьэти, чтобы проверить, равны ли они?Когда я использую .equals, он всегда просто возвращает false, есть ли способ сделать это без зацикливания обеих коллекций?

Ответы [ 3 ]

0 голосов
/ 12 сентября 2011

Так как вы не показали весь код CurvePoint, просто проверьте: getBid (). GetRate () и т. Д. Возвращают Примитивы, а не объекты Wrapper, верно?Потому что вы сравниваете их с == вместо equals ().

0 голосов
/ 12 сентября 2011

проверьте следующие ссылки, и вы найдете ответ:

простой способ найти, по-, если двойки-разные-листы, содержат-ровно-то-же-элементы

есть-есть-а-путь к регистрации по прибытию, если два-коллекция-содержит-The-же-элементы независимы

В ответах содержится много полезных подробностей, поэтому, пожалуйста, проверьте все, а не только принятый ответ.

0 голосов
/ 12 сентября 2011

Если вы сравниваете коллекции, то коллекция должна иметь сопоставимый интерфейс, который делает правильные вещи для коллекции.

В принципе это возможно, но если текущая коллекция не реализует сравнение, то способвам это понравится, вам нужно создать подкласс этой коллекции и переопределить методы compareTo(...) и equals(...).

...