我正在做一个项目,我在其中构建一个由两个数组组成的简单符号表:ArrayOfKeys和ArrayOfValues。 键是单词,值是文本中每个单词的频率。 我需要使用这个模型为我的ST类编写一个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类的一个实例。 输出应为:
让我们看看ST1有4对key-val:{'aaa':1,'bbb':1}
正如我所看到的,整个符号表应该在toString()方法的return语句中打印,因为它需要返回一个String。我不知道如何做到这一点,更不用说上面显示的格式了。
我能尝试的最好的是:
return (arrayOfKeys + ":" + arrayOfValues);
PS:我使用的是Java版本1.8.0_121。
答案 0 :(得分:2)
一种相对简洁(IMHO)的方法是创建数组所拥有的索引流,让Collectors.joining
为你做繁重的工作:
String result =
IntStream.range(0, arrayOfKeys.length)
.mapToObj(i -> "'" + arrayOfKeys[i] + "': " + arrayOfValues[i])
.collect(Collectors.joining(" , ", "{", "}"));
答案 1 :(得分:1)
您可以尝试使用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();
}
答案 2 :(得分:0)
public String toString() {
String results = "{";
for (int i = 0; i < arrayOfKeys.length; i++){
results += "'"+arrayOfKeys[i]+"' : "+arrayOfValue[i]+",";
}
results+="}";
return results;
}