2017-01-28 7 views
1

インデックスを格納するためにTreeMapを使用するプログラムがあります。私はその後、txtファイルにマップを保存するためにPrintWriterを使用し[]を削除するにはどのようなデータ構造を使用する必要がありますか?

TreeMap<String,Set<Integer>> map = new TreeMap<String,Set<Integer>>(); 

PrintWriter printWriter = new PrintWriter(outputFile); 

for(Map.Entry<String,Set<Integer>> entry : map.entrySet()){ 
    printWriter.println(entry.getKey()+" "+entry.getValue()); 
} 

printWriter.flush(); 
printWriter.close(); 

私は出力がOUTPUTFILEこのように見えるようにしようとしています:代わりに

! 5 
    "$200 218 
    "'deed 115 
    "'deed, 304 
    "a 5,6,22,28,148,176,302,347,387,401,410,442 

私はこれを取得しています:

! [5] 
    "$200 [218] 
    "'deed [115] 
    "'deed, [304] 
    "a [5,6,22,28,148,176,302,347,387,401,410,442] 

私は私が使用していますので、ブラケットがあると思われます設定しますが、かっこを取らないために何を使うべきかわかりません。

+0

'Set'をラップし、そのクラスの' toString() 'メソッドをオーバーライドするクラスを書くことができます。 –

答えて

1

getValue()あなたはSetを返します。そのため、これらの角括弧が得られます。

あなたは集合の要素を反復処理し、それらを印刷することができます - あなたは、ファイルにそれらの値を印刷したいとき

for (Map.Entry<String, Set<Integer>> entry : map.entrySet()) { 
    printWriter.print(entry.getKey()+ " "); 
    for(Integer setElement : entry.getValue()) { 
    printWriter.print(setElement + " "); 
    } 
    printWriter.println(); 
} 
2

は、それらがによって丸められ、したがって、Setはコレクションの一種であることをを忘れないでください角括弧。この括弧を削除する場合は、次のコードをテストしてください。

PrintWriter printWriter = new PrintWriter(outputFile); 

for(Map.Entry<String,Set<Integer>> entry : map.entrySet()){ 
    printWriter.print(entry.getKey()+" "); 
    for(Integer value : entry.getValue()) { 
     printWriter.print(value + " "); 
    } 
    printWriter.print("\n"); 
} 

このブラケットは表示されません。

よろしくお願いいたします。

関連する問題