在Java中实现节点的可比性
我是Java新手,因此有些人可能会觉得这些问题微不足道。 我有一个节点类的实现,它使用一个通用数据类型T。我想实现一个可比较的来比较T的两个实例 这是我的密码在Java中实现节点的可比性,java,comparable,Java,Comparable,我是Java新手,因此有些人可能会觉得这些问题微不足道。 我有一个节点类的实现,它使用一个通用数据类型T。我想实现一个可比较的来比较T的两个实例 这是我的密码 private class Node<T> implements Comparable<T> { private T data; private Node next; public Node(T data){ this.data = data
private class Node<T> implements Comparable<T> {
private T data;
private Node next;
public Node(T data){
this.data = data;
this.next = null;
}
@Override
public int compareTo(T other) {
if(this.data == other) return 0;
if(this.data < other) return 1;
if(this.data > other) return -1;
}
}
私有类节点实现可比较{
私有T数据;
私有节点下一步;
公共节点(T数据){
这个数据=数据;
this.next=null;
}
@凌驾
公共int比较(T其他){
如果(this.data==other)返回0;
如果(this.dataother)返回-1;
}
}
由于Java抛出错误的操作数类型错误,此代码无法编译。编写compareTo函数的正确方法是什么。感谢您的帮助。首先,您需要
T
s之间具有可比性。你想要的基本上就是
private class Node<T extends Comparable<T>> implements Comparable<Node<T>> {
...
@Override
public int compareTo(Node<T> other) {
return data.compareTo(other.data);
}
}
私有类节点实现可比较{
...
@凌驾
公共整数比较(节点其他){
返回data.compareTo(其他数据);
}
}
如果我只想比较两个T值,而不是两个节点,那么如何实现可比较。比较两个T
值是什么意思?如果您有两个T
值,只需调用t1.compareTo(t2)
。我正在尝试这样做private类节点{private T data;private Node next;public Node(T data){this.data=data;this.next=null;}public int compareTo(T other){return data.compareTo(other);}}
我在堆栈的实现中使用这个节点。因此,稍后当我调用if(((可比)项).compareTo(minValue)){//do something}
时,我得到了一个编译错误,实际上已经解决了。谢谢