T上的初学者Java Q扩展了可比T

时间:2019-02-18 23:34:29

标签: java struct tree binary

我是学习Java编码的初学者,并且正在实现Red Black Tree数据结构。我为Main类中的节点创建了一个类,并使用T扩展了ComparableT。

但是,以下行

RedBlackNode<T> nil =new RedBlackNode<T>(mainkey);

给出了错误,因为它没有标识“ T”数据类型的用法。我正在努力学习Comparable的用法,但无法解决此问题。任何帮助将不胜感激

public class Main {

    public void main(String[] args) {
        System.out.println("Hello World! qNew");
        int mainkey=10;
        System.out.println(mainkey);
        RedBlackNode<T> nil =new RedBlackNode<T>(mainkey);
        //RedBlackNode<T> root=nil;
        //System.out.println(nil.key);
    }
    public class RedBlackNode<T extends Comparable <T>>
    {
        public static final int BLACK = 0;  //Enumerating Colors with numbers for
        public static final int RED = 1;     // Color of node
        public T key;

        RedBlackNode<T> parent;  //Parent Node
        RedBlackNode<T> left;    //Left Child Node
        RedBlackNode<T> right;   //Right Child Node

        public int numLeft=0;     //No of elements to left of a node
        public int numRight=0;     //No of elements to right of a node

        public int color;       //Color of each node

        //Default constructor to initialize

        RedBlackNode()
        {
            color=BLACK;
            numLeft=0;
            numRight=0;
            parent=null;
            left=null;
            right=null;
        }

        //Constructor to initialize key value of the node

        RedBlackNode(T key)
        {
            this();
            this.key=key;
        }
    }

}

2 个答案:

答案 0 :(得分:1)

T代表您想要的任何形式。在编写课程时,您使用大写字母T或G,但是使用大写字母时,它需要知道T是什么。

如果我有一个Person类作为节点中的数据,我将像这样RedBlackNode<Person> parent = new RedBlackNode<Person>();

答案 1 :(得分:0)

实际上这可行:

RedBlackNode nil = new RedBlackNode(mainkey);

似乎通过跳过数据类型,Java自动使用提供的那个作为参数