繁体   English   中英

使用 Comparable 接口对通用链表进行排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM