我正在尝试将compareTo方法用于通用节点类型E。
我已将E绑定到Comparable
public class LinkedList<E extends Comparable<E>> {
// ----------------------------------------------------------
// Implementing the doubly linked nodes (static nested class)
// ----------------------------------------------------------
private static class Node<E extends Comparable<E>> {
此方法isSorted在LinkedList类中实现,Node类在Linkedlist类中。
我一直收到编译错误“对于LinkedList.Node类型,方法compareTo(LinkedList.Node)是未定义的”
我相信只有当E没有扩展Comparable时才弹出,就我的情况而言。 有什么帮助吗?
public boolean isSorted( ){
if(!isEmpty()){
Node<E> temp = head;
boolean local = true;
int x=0;
while (temp.next != null){
x=temp.compareTo(temp.next);
if(x<0){
temp = temp.next;}
else {return local;}
}
return local;}
else{ throw new IllegalArgumentException();}
}
我已经检查了这个帖子,How to compare generic nodes in a linked list using Comparable?
没有用。
提前谢谢
Mjall2
答案 0 :(得分:2)
您正在尝试比较节点,而它只是节点内Comparable
的值。而不是temp.compareTo(temp.next)
,您可能想要temp.value.compareTo(temp.next.value)
。