我在 java 中看不到子字符串方法

I can't see substring method in java

我想在 java 中创建一个二叉搜索树。键将是字符串,我将按字母顺序比较字符串。我想将我的 "key"s 转换为 char 数组,这样我就可以轻松地编写一个方法来检查字母顺序。不幸的是,我无法使用除 equals()getClass()wait()toString()HashCode()Notify() 之外的任何字符串方法。我想使用 substring 方法和 toCharArray() 方法,如 stringName.substring() 或 stringName.toCharArray(),但我无法访问它们。代码如下:

public class BST<V,String> {

    public class Node <V,String> {

        private Node right=null;
        private Node left=null;

        private String key;

        private V value=null;

        public Node(V value, String key){
                this.key=key;
                this.value=value;

            }
        }

    Node root=null;
    Node temp=null;

    public void add(V value, String key){
            if(isEmpty()){
                root.value=value;
                root.key=key;
            }
            else{
                temp=root;
                    while(true){
                    if(key > temp.key){
                        if(temp.right==null){
                            Node node= new Node(value,key);
                            temp.right=node;
                        }
                        temp=temp.right;
                        }
                    else if(key < temp.key)
                        if(temp.left==null){
                            Node node= new Node(value,key);
                            temp.left=node;
                        }
                        temp=temp.left;
                    }
            }
        }

    public boolean isEmpty(){
        if(root.value==null){
            return true;
        }
        else 
            return false;

    }


}

通过声明:

public class BST<V,String> 

...您在 class 上声明了两个通用参数;一个名为 V,另一个名为 String

可能 的意图是省略密钥的通用类型,因为您知道它无论如何都会是 String:

public class BST<V>

你的错误在 public class BST<V,String> 的声明中。

您将 String 作为通用参数,它隐藏了实际的字符串 class。因此,你写的 String 实际上是任何东西。

解决方案是放弃通用参数 String,结果是 public class BST<V>String 将不再隐藏。

请注意,eclipse 会对此发出警告:

The type parameter String is hiding the type String