我想使用Java的Comparable Interface对自己实现的链接列表进行排序。我需要实现compareTo方法: 这是我的类ListElement的代码:
public class ListElement implements Comparable<ListElement> {
public Object wert;
public ListElement nachFolger;
public ListElement(Object wert , ListElement nachFolger) {
this.wert=wert;
this.nachFolger=nachFolger;
}
@Override
public int compareTo(ListElement a) {
if(this.nachFolger.wert - a.wert) {
return 1;
}
return 0;
}
}
但是我得到一个错误,有什么建议吗?
答案 0 :(得分:2)
您正在尝试减去类型为Object
的引用。
您的元素类型应实现Comparable
:
public class ListElement<T extends Comparable<T>> implements Comparable<ListElement<T>> {
public T wert;
public ListElement<T> nachFolger;
public ListElement(T wert, ListElement<T> nachFolger) {
this.wert=wert;
this.nachFolger=nachFolger;
}
@Override
public int compareTo(ListElement<T> a) {
return wert.compareTo(a.wert);
}
}
答案 1 :(得分:0)
在Java中,减法运算仅适用于数字文字(和自动取消装箱的数字对象)。当您尝试在非数字Object
类型上使用它时,会遇到错误。如果要比较两个wert
值,可以执行以下操作:
将类型从number
更改为Object
,以便进行比较,例如:
public Object wert;
@Override
public int compareTo(ListElement a) {
return wert.compareTo(a.wert);
}
将类型更改为Comparable
,以便可以在两个compareTo
对象上使用wert
public Comparable wert;
@Override
public int compareTo(ListElement a) {
return wert.compareTo(a.wert);
}