Java 使用可比较界面对通用链表进行排序
我想使用Java的Compariable接口对我自己实现的链表进行排序。我需要实现Comparieto方法: 以下是我的类ListElement的代码:Java 使用可比较界面对通用链表进行排序,java,generics,linked-list,comparable,Java,Generics,Linked List,Comparable,我想使用Java的Compariable接口对我自己实现的链表进行排序。我需要实现Comparieto方法: 以下是我的类ListElement的代码: public class ListElement implements Comparable<ListElement> { public Object wert; public ListElement nachFolger; public ListElement(Object wert , ListEle
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;
}
}
公共类ListElement实现了可比较的{
公共对象wert;
nachFolger公共列表;
公共ListElement(对象wert、ListElement nachFolger){
这个。wert=wert;
这个.nachFolger=nachFolger;
}
@凌驾
公共整数比较(列表元素a){
如果(this.nachFolger.wert-a.wert){
返回1;
}
返回0;
}
}
但是我得到了一个错误,有什么建议吗?您正在尝试减去
Object
类型的引用
您的元素类型应实现可比性:
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);
}
}
公共类ListElement实现了可比较的{
公共卫生服务;
nachFolger公共列表;
公共列表元素(T wert、ListElement nachFolger){
这个。wert=wert;
这个.nachFolger=nachFolger;
}
@凌驾
公共整数比较(列表元素a){
返回wert.compareTo(a.wert);
}
}
在Java中,减法操作仅适用于数字文本(和自动取消固定的数字对象)。当您试图在非数值对象
类型上使用它时,会出现错误。如果要比较两个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);
}
不能从另一个对象中减去一个对象。如果(this.nachFolger.wert-a.wert)
没有返回布尔值
,您试图实现什么。由于这些字段是对象
s,因此不能对其进行细分。wert
需要具有可比性
,否则需要使用比较器
,并且如果元素相同,compareTo函数将只返回等于或大于,但决不小于,是否应该与下一个进行比较??@PeterLawrey可能。问题是,ListElement
是链表的整个实现,还是仅仅一个链接。ListElement是将包含在我的链表中的对象类型,我的LinkedList的类称为Liste,我在那里实现了所有必需的方法s.a:addFirst()addLast delete等…我刚刚这么做了,但是在调用Collections.sort(myList)时,我在主函数中遇到了一个错误,我应该调用其他东西吗?myList
是否属于类型ListElement
?没有myList属于类型ListListe类有一个属性ListElement startElement,它是列表的标题以及链表功能s.a:addfirst delete等。。