在Java中为节点实现Comparable功能

3

我是Java的新手,因此这些问题可能对一些人来说很简单。我有一个使用泛型数据类型T的Node类实现。我想实现一个可比较性来比较两个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;
        }
    }

这段代码无法编译,因为Java会抛出不良操作数类型错误。正确的编写compareTo函数的方法是什么?任何帮助都将不胜感激。

1个回答

4
首先,您需要使 T 之间可以相互比较。您所需的基本上只是:
private class Node<T extends Comparable<T>> implements Comparable<Node<T>> {
    ...

    @Override
    public int compareTo(Node<T> other) {
       return data.compareTo(other.data);
    }
}

如果我只想比较两个 T 值而不是两个节点,那么如何实现 comparable 接口。 - Zeus
1
你是说要比较这两个 T 值吗?如果你有两个 T 值,只需要调用 t1.compareTo(t2) - Louis Wasserman
我正在尝试做这个。`private class Node<T extends Comparable<T>> { 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); } }` - Zeus
我正在使用这个节点来实现一个堆栈。因此,当我调用if(((Comparable) item).compareTo(minValue)){ //do something }时,我会得到一个编译错误。 - Zeus
已经弄明白了。谢谢。 - Zeus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接