我在 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
我想在 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