使用不一致的equals和compareTo方法Java排序

时间:2016-08-08 10:27:45

标签: java equals comparable

我有一个POJO说Animal.java,看起来如下:

class Animal{   
  String name;
  String owner;
  String color; 
}

如果他们有相同的名字和拥有权,则两只动物是平等的。所以,我需要相应地重写equals和hashcode:

   @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + name.hashCode();
        result = prime * result + owner.hashCode();
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Animal other = (Animal) obj;
        if (!name.equals(other.name))
            return false;
        if (!owner.equals(other.owner))
            return false;
        return true;
    }

现在的问题是每当我在Animal上显示一个ArrayList时,我想显示它基于color字段排序。 如果我使用Comparable并覆盖compareTo,如下所示:

    @Override
    public int compareTo(Animal o) {
        return color.compareTo(o.color);
    }

然后我的equals和compareTo方法不一致。这也是一个问题。

那么,我如何根据AnimalAnimal.color的ArrayList进行排序?

0 个答案:

没有答案
相关问题