如何使用Java的Comparable比较树中的Generic对象?

use*_*750 2 java compareto comparable

现在我正在尝试做一个涉及创建可以接收任何通用对象的堆的赋值,并且节点可以通过实现Comparable接口相互比较.问题是,我找不到像这样比较通用对象的方法.

这是我到目前为止Node类的内容:

private class Node<E> implements Comparable<E>
{
    private E data;
    private Node left;
    private Node right;

    //constructors
    public Node(E data)
    {
        this.data = data;
        left = null;
        right = null;
    }

    public Node(E data, Node left, Node right)
    {
        this.data = data;
        this.left = left;
        this.right = right;
    }


   //returns current data
    public Object getData()
    {
        return this.data;
    }

    public int compareTo(E other)
    {
        return data.compareTo(other);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,它说"找不到符号 - 方法比较(E)." 方法compareTo()在Comparable接口中,所以我无法理解为什么会发生这种情况,我不知道如何修复它.任何人都有任何想法?

Sim*_*onC 8

您需要定义EComparable还有:

private class Node<E extends Comparable<E>> implements Comparable<E>
Run Code Online (Sandbox Code Playgroud)

此外,让Node类与自身相比可能更有意义:

private class Node<E extends Comparable<E>> implements Comparable<Node<E>>
...
public int compareTo(Node<E> other)
{
    return data.compareTo(other.data);
}
Run Code Online (Sandbox Code Playgroud)