Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初学者javaq对T的扩展_Java_Struct_Tree_Binary - Fatal编程技术网

初学者javaq对T的扩展

初学者javaq对T的扩展,java,struct,tree,binary,Java,Struct,Tree,Binary,我是一名学习java代码的初学者,当时正在实现一个红黑树数据结构。我在主类中为节点创建了一个类,并使用了T 然而,下面的一行 RedBlackNode<T> nil =new RedBlackNode<T>(mainkey); RedBlackNode nil=新的RedBlackNode(主键); 由于未标识“T”数据类型的用法,因此给出了一个错误。我正在努力学习Comparable的用法,但无法解决这个问题。任何帮助都将不胜感激 public class Main

我是一名学习java代码的初学者,当时正在实现一个红黑树数据结构。我在主类中为节点创建了一个类,并使用了T

然而,下面的一行

RedBlackNode<T> nil =new RedBlackNode<T>(mainkey);
RedBlackNode nil=新的RedBlackNode(主键);
由于未标识“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;
        }
    }

}
公共类主{
公共void main(字符串[]参数){
System.out.println(“helloworld!qNew”);
int主键=10;
System.out.println(主键);
RedBlackNode nil=新的RedBlackNode(主键);
//RedBlackNode root=nil;
//System.out.println(无键);
}
公共类RedBlackNode
{
public static final int BLACK=0;//使用数字枚举颜色
public static final int RED=1;//节点的颜色
公钥;
RedBlackNode父节点;//父节点
RedBlackNode left;//左子节点
RedBlackNode right;//右子节点
public int numLeft=0;//节点左侧的元素数
public int numRight=0;//节点右侧的元素数
public int color;//每个节点的颜色
//要初始化的默认构造函数
RedBlackNode()
{
颜色=黑色;
numLeft=0;
numRight=0;
parent=null;
左=空;
右=空;
}
//构造函数初始化节点的键值
红黑节点(T键)
{
这个();
这个。键=键;
}
}
}

T表示您希望它是什么。在编写类时,您使用大写字母T或G,但在使用时,它需要知道T是什么

如果节点中有一个Person类作为数据,我会这样使用它
RedBlackNode parent=new RedBlackNode()

实际上这起作用了:

RedBlackNode nil=新的RedBlackNode(主键)


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

为什么您希望这样做?什么是
T
呢?我怀疑你想要
RedBlackNode nil=new RedBlackNode(主键)-实例化泛型类型时,需要指定类型参数。