次のエラーが表示されます。
比較方法が約款違反!
これは私のcompareToメソッドです
public int compareTo(ComparableItem another) {
if (this.score == another.score)
return this.getItemName().compareTo(another.getItemName());
else if ((this.score) > another.score)
return 1;
else
return -1;
}
項目の点数を比較したい。しかし、スコアが同じ場合は、名前で並べ替えたいと思います。
何を変更する必要があり、なぜこのエラーが発生するのですか?
編集:
スコアは an int
、アイテム名は aString
です。
これは ComparableItem クラスです:
public abstract class ComparableItem extends MenuListItem implements Comparable<ComparableItem> {
protected int score;
public ComparableItem(String itemID, String itemName) {
super(itemID, itemName);
}
public int compareTo(ComparableItem another) {
if (this.score == another.score)
return this.getItemName().compareTo(another.getItemName());
else if ((this.score) > another.score)
return 1;
else
return -1;
}
public abstract boolean found(String criteria);
そして、これは MenuListItem クラスです:
public class MenuListItem {
private String itemID,itemName;
public MenuListItem(String itemID, String itemName){
setItemID(itemID);
setItemName(itemName);
}
public String getItemID() {
return itemID;
}
public void setItemID(String itemID) {
this.itemID = itemID;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
@Override
public String toString() {
return this.itemName;
}