【发布时间】:2018-05-02 20:30:24
【问题描述】:
我想通过键(字符串类型)对我的 AVLNode 类型的对象进行排序。我实例化了一个 Comparator 并希望在 String 属性上应用 compareTo 方法。但是,我的 IDE 向我显示了错误 Cannot resolve method compareTo。我不明白为什么我不能在这一点上对字符串使用compareTo 方法。
import java.util.*;
public class AVLTreeTest {
public static void main(String[] args){
Comparator<AVLNode>myComp2 = new Comparator<AVLNode>() {
@Override public int compare(AVLNode n1, AVLNode n2) {
return n1.getKey().compareTo(n2.getKey());
}
};
AVLNode<String, AVLNode> a1 = new AVLNode( "test3", new Cuboid (2,3,4,5,6,7) );
AVLNode<String, AVLNode> a2 = new AVLNode( "test2", new Cuboid (2,3,4,5,6,7) );
AVLNode<String, AVLNode> a3 = new AVLNode( "test8", new Cuboid (2,3,4,5,6,7) );
AVLNode<String, AVLNode> a4 = new AVLNode( "test1", new Cuboid (2,3,4,5,6,7) );
List<AVLNode> listOfNodes = new ArrayList<AVLNode>();
listOfNodes.add(a1);
listOfNodes.add(a2);
listOfNodes.add(a3);
listOfNodes.add(a4);
Collections.sort(listOfNodes, myComp2);
for (AVLNode node : listOfNodes){
System.out.println(node);
}
}
}
这是我的 AVLNode 类
public class AVLNode<K, V> {
private AVLNode<K, V> left, right, parent;
private int height = 1;
private K key;
private V value;
public AVLNode() {}
public AVLNode(K key, V value) {
this.key = key;
this.value = value;
}
public V getValue() {
return value;
}
public K getKey() {
return key;
}
}
我做错了什么?
【问题讨论】:
-
K不符合ComparableinAVLNode -
Java 8. 编辑了我的问题
标签: java generics java-8 comparator