如何将compareTo与节点一起使用?

时间:2016-07-30 02:11:59

标签: java generics comparable compareto

我有这个简单的节点:

public class Node<T> implements Comparable<Node>{
    T value; 
    Node<T> next; 
    public Node(T value){
        this.value = value; 
        this.next = null; 
    }
    public int compareTo(Node other){
        return this.value.compareTo(other.value); 
    }
}

日食变得聪明,并要求我施放“this.value”。用int转换它不起作用。应该怎么做?

1 个答案:

答案 0 :(得分:4)

您对T的声明并未“延伸”可比较,因此您无法使用它进行比较。

您可以将其更改为:

curl

这假设T实现了Comparable。 否则,如果T实际上不具有可比性,您可以在节点级别进行比较。但是你应该仍然像这样声明你的类

public class Node<T extends Comparable<T>> implements Comparable<Node<T>>{
    T value; 
    Node<T> next; 
    public Node(T value){
        this.value = value; 
        this.next = null; 
    }
    public int compareTo(Node<T> other){
        return this.value.compareTo(other.value); 
    }
}

这样您在进行比较时就可以使用public class Node<T extends Something> 中的方法。

如果我回到开头:当你实例化你的Node时,你会做这样的事情:

Something

MyType成为您的T. MyType是否具有可比性?如果是这样,您可以如上所示声明您的课程。否则,您将无法执行T.compareTo(又名MyType.compareTo),因此您需要使用MyType中的其他字段执行比较。

我希望这很清楚......