繁体   English   中英

用通用双链表实现Comparable

[英]Implementing Comparable with a generic doubly linked list

我正在编写一个双向链接列表,其中添加了从“家具”类扩展的对象,并使用compareTo方法对它们进行排序。

我的列表和节点代码:

class Node<E extends Comparable<E>> { ....... }


class DList<E extends Comparable<E>>
{

[..]

    public void add(E c)
    {
        Node<E> finger = head;
        while (finger != null && ((finger.value().compareTo(c)) > 0))
            finger = finger.Next();

    }
}

我的compareTo方法位于我的Furniture类的子类中,例如:

class Chair extends Furniture
{


[.....]

    public int compareTo(Chair c)
    {
    if(this.getStyle().equals(c.getStyle()))
        return this.getColor().compareToIgnoreCase(c.getColor());
    return this.getStyle().compareToIgnoreCase(c.getStyle());
    }


}

然后,我尝试通过

    DList<Furniture> DD = new DList<Furniture>();

我收到错误:类型参数家具不在类型变量E中

确保Furniture实施Comparable<Furniture>

也许您的Forniture类未实现Comparable<Forniture>

您的Furniture类应该是抽象的,并且应该扩展Comparable,而Chair类应该实现Furniture类。

一种替代方法是使您的Furniture类实现可比较。

<E extends Comparable<E>>表示E必须扩展Comparable<E> ,因此请确保Furniture扩展Comparable。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM