加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 23:22:37 所属栏目:Java 来源:网络整理
导读:我正在使用链接列表实现排序列表.我的节点类看起来像这样 public class NodeE{ E elem; NodeE next,previous;} 在排序列表类中我有add方法,我需要根据compareTo()方法的实现来比较泛型对象,但是我得到了这个语法错误 “对于类型E,方法compareTo(E)未定义”.
我正在使用链接列表实现排序列表.我的节点类看起来像这样
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

        }
}

这是一个对象实现compareTo方法

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;
}

它现在将编译.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读