【问题标题】:toString method in Java to print a symbol tableJava中的toString方法打印符号表
【发布时间】:2017-03-19 17:52:58
【问题描述】:

我正在做一个项目,我在其中构建了一个由两个数组组成的简单符号表: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 (arrayOfKeys + ":" + arrayOfValues);

PS:我使用的是 Java 版本 1.8.0_121。

【问题讨论】:

  • 使用 StringBuilder。使用循环。将每个键/值对附加到 StringBuilder。

标签: java arrays tostring


【解决方案1】:

一种相对简洁(恕我直言)的方法是创建数组具有的索引流,并让Collectors.joining 为您完成繁重的工作:

String result = 
    IntStream.range(0, arrayOfKeys.length)
             .mapToObj(i -> "'" + arrayOfKeys[i] + "': " + arrayOfValues[i])
             .collect(Collectors.joining(" , ", "{", "}"));

【讨论】:

    【解决方案2】:

    您可以尝试使用 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();
    }
    

    【讨论】:

      【解决方案3】:
       public String toString() {
          String results = "{";
          for (int i = 0; i < arrayOfKeys.length; i++){
              results += "'"+arrayOfKeys[i]+"' : "+arrayOfValue[i]+",";
          }
          results+="}";
      
          return results;
      }
      

      【讨论】:

        猜你喜欢
        • 2014-06-02
        • 1970-01-01
        • 2014-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-18
        相关资源
        最近更新 更多