[英]Use Comparable Interface to Sort a Generic Linked List
我想使用 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;
}
}
但是我收到一个错误,有什么建议吗?
您正在尝试减去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);
}
}
在 Java 中,减法运算仅适用于数字文字(和自动拆箱的数字对象)。 当您尝试在非数字Object
类型上使用它时,您会收到错误消息。 如果要比较两个wert
值,可以执行以下操作:
将类型从Object
更改为number
以便您可以进行比较,例如:
public Object wert; @Override public int compareTo(ListElement a) { return wert.compareTo(a.wert); }
将类型更改为Comparable
以便您可以在两个wert
对象上使用compareTo
public Comparable wert; @Override public int compareTo(ListElement a) { return wert.compareTo(a.wert); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.