如何使用Comparable比较链接列表中的通用节点?

| 我正在使用链接列表实现排序列表。我的节点类看起来像这样
public class Node<E>{
    E elem;
    Node<E> next, previous;
}
在排序列表类中,我具有add方法,在这里我需要根据它们的compareTo()方法的实现来比较通用对象,但出现此语法错误 \“类型E \的方法compareTo(E)未定义。”我曾尝试在Node中实现compareTo方法,但后来我无法调用任何对象的方法,因为E是泛型类型。 这是add(E elem)方法的未完成主体。
public void add(E elem) 
{

        Node<E> temp = new Node<E>();
        temp.elem = elem;

        if( isEmpty() ) {           
            temp.next = head;
            head.previous = temp;
            head = temp;
            counter++; 
        }else{
            for(Node<E> cur = head; cur.next != null ; cur= cur.next) {
                **if(temp.elem.comparTo(cur.elem)) {**
                    //do the sort;

                }/*else{
                    cur.previous = temp;
                }*/             
            }
            //else insert at the end

        }
}
这是实现比较对象方法的对象之一
public class Patient implements Comparable<Patient>{
    public int compareTo(Patient that)
    {
        return (this.getPriority() <= that.getPriority() ? 1 : 0 );
    }
}
    
已邀请:
        绑定到可比的E:
public class Node<E extends Comparable<E>>{
    E elem;
    Node<E> next, previous;
}
它将立即编译。     
        如果希望存储在节点中的元素具有可比性,则可以使用泛型说明这一点:
public class Node<E extends Comparable<E>> {

    E elem;
    Node<E> next, previous;
}
这样可以确保每个
E
都实现
Comparable
接口,因此您可以安全地调用
compareTo
方法。     
        您的通用“ 5”似乎必须是“ 9”。这样,您将可以访问
compareTo(E other)
方法。但是,您将无法添加未实现此接口的元素。     
        尝试
public class Node<E extends Comparable<E>>{
    E elem;
    Node<E> next, previous;
}
    

要回复问题请先登录注册