在Java中实现节点的可比性

在Java中实现节点的可比性,java,comparable,Java,Comparable,我是Java新手,因此有些人可能会觉得这些问题微不足道。 我有一个节点类的实现,它使用一个通用数据类型T。我想实现一个可比较的来比较T的两个实例 这是我的密码 private class Node<T> implements Comparable<T> { private T data; private Node next; public Node(T data){ this.data = data

我是Java新手,因此有些人可能会觉得这些问题微不足道。 我有一个节点类的实现,它使用一个通用数据类型T。我想实现一个可比较的来比较T的两个实例

这是我的密码

private class Node<T> implements Comparable<T> {
        private T data;
        private Node next;

        public Node(T data){
            this.data = data;
            this.next = null;
        }

        @Override
        public int compareTo(T other) {
            if(this.data == other) return 0;
            if(this.data < other) return 1;
            if(this.data > other) return -1;
        }
    }
私有类节点实现可比较{
私有T数据;
私有节点下一步;
公共节点(T数据){
这个数据=数据;
this.next=null;
}
@凌驾
公共int比较(T其他){
如果(this.data==other)返回0;
如果(this.dataother)返回-1;
}
}

由于Java抛出错误的操作数类型错误,此代码无法编译。编写compareTo函数的正确方法是什么。感谢您的帮助。

首先,您需要
T
s之间具有可比性。你想要的基本上就是

private class Node<T extends Comparable<T>> implements Comparable<Node<T>> {
    ...

    @Override
    public int compareTo(Node<T> other) {
       return data.compareTo(other.data);
    }
}
私有类节点实现可比较{
...
@凌驾
公共整数比较(节点其他){
返回data.compareTo(其他数据);
}
}

如果我只想比较两个T值,而不是两个节点,那么如何实现可比较。比较两个
T
值是什么意思?如果您有两个
T
值,只需调用
t1.compareTo(t2)
。我正在尝试这样做
private类节点{private T data;private Node next;public Node(T data){this.data=data;this.next=null;}public int compareTo(T other){return data.compareTo(other);}}
我在堆栈的实现中使用这个节点。因此,稍后当我调用
if(((可比)项).compareTo(minValue)){//do something}
时,我得到了一个编译错误,实际上已经解决了。谢谢