2012-04-11 64 views
0

我正在编写一个双向链表,当我的类“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方法(S)位于我的家具类的子类,例如:

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

+0

p.s.为获得最佳效果,使用'>' – newacct 2012-04-11 20:00:03

回答

4

确保Furniture实现Comparable<Furniture>

+1

而'Chair'需要实现'int compareTo(Furniture f)'来匹配。 – 2012-04-11 17:25:37

+0

不,如果Furniture实现Comparable 那么该类已经有一个compareTo方法,并且Chair类将继承此compareTo方法。 – 2012-04-11 17:28:09

+0

实际上'Chair'需要实现'Comparable ',但前提是他需要实例化一个'DList ' – 2012-04-11 17:33:17

0

也许你Forniture类未实现Comparable<Forniture>

0

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

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

0

<E extends Comparable<E>>意味着E必须延伸Comparable<E>,所以请确保Furniture延伸Comparable。