我有一个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方法不一致。这也是一个问题。
那么,我如何根据Animal
对Animal.color
的ArrayList进行排序?