Java 中的 toString 方法打印符号 table
toString method in Java to print a symbol table
我正在做一个项目,我在其中构建了一个简单的符号 table,它由两个数组组成:ArrayOfKeys 和 ArrayOfValues。
键是单词,值是文本中每个单词的频率。
我需要使用此模型为我的 ST class 编写一个 toString 方法:
public String toString() {
// write your toString() method here
}
假设从文本中读取单词 "aaa" 和 "bbb" 并插入到 ST 中。
toString 方法将这样调用:
StdOut.println("Let's see ST1 with 4 pairs key-val: " + st1);
其中 "st1" 是 ST class 的一个实例。
输出应该是这样的:
让我们看看具有 4 对键值的 ST1:{'aaa': 1 , 'bbb': 1}
如我所见,整个符号 table 应该打印在 toString() 方法的 return 语句中,因为它需要 return 一个字符串。我不知道该怎么做,更不用说上面显示的格式了。
我能尝试的最好的是:
return (arrayOfKeys + ":" + arrayOfValues);
PS:我正在使用 Java 版本 1.8。0_121。
一种相对简洁的(恕我直言)方法是创建数组具有的索引流,让 Collectors.joining
为您完成繁重的工作:
String result =
IntStream.range(0, arrayOfKeys.length)
.mapToObj(i -> "'" + arrayOfKeys[i] + "': " + arrayOfValues[i])
.collect(Collectors.joining(" , ", "{", "}"));
您可以尝试使用StringBuilder 生成字符串。代码应如下所示:
public String toString() {
StringBuilder sb = new StringBuilder("Let's see ST1 with 4 pairs key-val: {");
for(int i = 0; i< arrayOfKeys.size();i++) {
sb.append('\'' + arrayOfKeys[i] + '\': ');
sb.append(String.valueOf(arrayOfValues[i]));
if(i!=arrayOfKeys.size() -1) {
sb.append(" , ");
}
}
sb.append("}");
return sb.toString();
}
public String toString() {
String results = "{";
for (int i = 0; i < arrayOfKeys.length; i++){
results += "'"+arrayOfKeys[i]+"' : "+arrayOfValue[i]+",";
}
results+="}";
return results;
}
我正在做一个项目,我在其中构建了一个简单的符号 table,它由两个数组组成:ArrayOfKeys 和 ArrayOfValues。 键是单词,值是文本中每个单词的频率。 我需要使用此模型为我的 ST class 编写一个 toString 方法:
public String toString() {
// write your toString() method here
}
假设从文本中读取单词 "aaa" 和 "bbb" 并插入到 ST 中。 toString 方法将这样调用:
StdOut.println("Let's see ST1 with 4 pairs key-val: " + st1);
其中 "st1" 是 ST class 的一个实例。 输出应该是这样的:
让我们看看具有 4 对键值的 ST1:{'aaa': 1 , 'bbb': 1}
如我所见,整个符号 table 应该打印在 toString() 方法的 return 语句中,因为它需要 return 一个字符串。我不知道该怎么做,更不用说上面显示的格式了。
我能尝试的最好的是:
return (arrayOfKeys + ":" + arrayOfValues);
PS:我正在使用 Java 版本 1.8。0_121。
一种相对简洁的(恕我直言)方法是创建数组具有的索引流,让 Collectors.joining
为您完成繁重的工作:
String result =
IntStream.range(0, arrayOfKeys.length)
.mapToObj(i -> "'" + arrayOfKeys[i] + "': " + arrayOfValues[i])
.collect(Collectors.joining(" , ", "{", "}"));
您可以尝试使用StringBuilder 生成字符串。代码应如下所示:
public String toString() {
StringBuilder sb = new StringBuilder("Let's see ST1 with 4 pairs key-val: {");
for(int i = 0; i< arrayOfKeys.size();i++) {
sb.append('\'' + arrayOfKeys[i] + '\': ');
sb.append(String.valueOf(arrayOfValues[i]));
if(i!=arrayOfKeys.size() -1) {
sb.append(" , ");
}
}
sb.append("}");
return sb.toString();
}
public String toString() {
String results = "{";
for (int i = 0; i < arrayOfKeys.length; i++){
results += "'"+arrayOfKeys[i]+"' : "+arrayOfValue[i]+",";
}
results+="}";
return results;
}