首页 > 解决方案 > Java如何覆盖通用V的比较

问题描述

我真的很挣扎。我不知道为什么我不能将值与 Node.value 进行比较......

线:

if (value < currentNode.value) {

问题:运算符 '<' 不能应用于 'V','java.lang.Comparable'

public class BinaryTree<V extends Comparable<V>> {
    Node<V> root;

    public void addNode(V value) {
        Node newNode = new Node(value);

        if (root == null) {
            root = newNode;
        } else {
            Node<V> currentNode = root;
            Node<V> parent;

            while (true) {
                parent = currentNode;

                if (value.compareTo(currentNode.value) == -1) {
                    currentNode = currentNode.left;

                    if (currentNode == null) {
                        parent.left = newNode;
                        return;
                    }
                } else {
                    currentNode = currentNode.right;

                    if (currentNode == null) {
                        parent.right = newNode;
                        return;
                    }
                }
            }
        }

    }

    public int compareTo(V v){
        if(this.V > v) return 1;
        if(this.V < v) return -1;
        else                   return 0;
    }
}

标签: javabinary-search-tree

解决方案


您的节点还应该具有可扩展的泛型类型,Node<V extends Comparable<V>>并且应该使用该泛型进行初始化Node<V> root——这适用于所有节点变量。


推荐阅读