繁体   English   中英

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

[英]I can't see substring method in java

我想用Java创建一个二进制搜索树。 键将是字符串,我将按字母顺序比较字符串。 我想将“键”转换为char数组,以便可以轻松编写一种方法来检查字母顺序。 不幸的是,除了equals()getClass()wait()toString()HashCode()Notify()之外,我无法使用任何String方法。 我想使用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> 

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

可能想要做的是省略键的通用类型,因为您知道它无论如何都将是String

public class BST<V>

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

您将String作为通用参数,并且隐藏了实际的String类。 因此,您写成String的东西实际上就是任何东西。

解决方案是只放弃通用参数String ,从而产生public class BST<V> 这样事情就可以了,因为String将不再被隐藏。

请注意,eclipse确实对此提供了警告:

类型参数String隐藏类型String

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM