2017-03-19 16 views
1

私は2つの配列ArrayOfKeysとArrayOfValuesで構成される単純なシンボルテーブルを作成するプロジェクトを行っています。 キーは単語で、値はテキスト内の各単語の頻度です。私はこのモデルを使用して、私のSTクラスのtoStringメソッドを記述する必要が :Javaで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クラスのインスタンスです。

私が見るように、全体シンボルテーブルがなければならない{1 'AAA':::1、 'BBB'}

だが4ペアキーValにST1を見てみましょう: 出力は次でなければなりません文字列を返す必要があるため、toString()メソッドのreturn文に出力されます。私はこれを行う方法はわかりませんが、上に示した形式ではありません。

私は試みることができる最高だった:

return (arrayOfKeys + ":" + arrayOfValues); 

PS:私は、Javaバージョン1.8.0_121を使用しています。

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

使用のStringBuilder。ループを使用します。すべてのキー/値のペアをStringBuilderに追加します。 –

答えて

0
public String toString() { 
    String results = "{"; 
    for (int i = 0; i < arrayOfKeys.length; i++){ 
     results += "'"+arrayOfKeys[i]+"' : "+arrayOfValue[i]+","; 
    } 
    results+="}"; 

    return results; 
} 
2

つの比較的きちんとした(私見)アプローチは、配列が持つインデックスのストリームを作成し、Collectors.joiningがあなたのために重い物を持ち上げるを行うようにすることです。コードは以下のようになります。

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(); 
} 
1

あなたは文字列を生成するためのStringBuilderを使用して試すことができます:

関連する問題