实现与通用双向链表相媲美

时间:2012-04-11 17:10:56

标签: java list generics

我正在编写一个双向链表,当我添加从我的类“Furniture”扩展的对象时,使用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>();

我收到错误:类型参数furniture不在类型变量E

4 个答案:

答案 0 :(得分:4)

确保Furniture实施Comparable<Furniture>

答案 1 :(得分:0)

也许您的Forniture课程没有实施Comparable<Forniture>

答案 2 :(得分:0)

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

另一种方法是让您的Furniture类实现Comparable。

答案 3 :(得分:0)

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