Начинающий Java Q на T расширяет Comparable T - PullRequest
0 голосов
/ 19 февраля 2019

Я новичок в изучении кода на Java и внедряю структуру данных Red Black Tree.Я создал класс для узла внутри класса Main и использовал T extends Comparable T.

Однако следующая строка

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

выдает ошибку, поскольку не идентифицирует использование "Т "тип данных.Я очень стараюсь научиться использовать 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 голосов
/ 21 февраля 2019

На самом деле это сработало:

RedBlackNode nil = new RedBlackNode(mainkey);

Кажется, что, пропуская тип данных, Java автоматически использует предоставленный в качестве аргумента

0 голосов
/ 19 февраля 2019

T представляет собой то, что вы хотите.При написании класса вы используете заглавные буквы, такие как T или G, НО, когда вы используете его, ему нужно знать, что это за T.

Если бы у меня был класс Person в качестве данных в узле, я быиспользуйте это так RedBlackNode<Person> parent = new RedBlackNode<Person>();

...