1

次の実行中:

ImmutableMultimap<Something, Something> map;
//Say I insert "Hello", "5" to the map
System.out.println(map.keys().toString());

[Hello]これは私がそうするときそう印刷します

if(map.keys().toString().equals("Hello"))

それは常に失敗します。やりたくない

if(map.keys().toString.equals("[Hello]")

角括弧なしで結果を表示する方法はありますか?

4

4 に答える 4

18

toString()重大なことには絶対に使用しないでください。このメソッドは、(デバッガなどで) 何が起こっているかを調査する人々を対象としており、それ以外の目的はありません。

さらに、括弧はありません。map.keys()はコレクションであり、そのtoString()メソッドはコレクションの場合と同様に機能します。map.keys.size() == 1テストをテストしてから、唯一の要素をチェックすることで、テストを置き換えることをお勧めします。

于 2012-08-09T19:45:16.480 に答える
5
map.keys().toString().replaceAll("[\\[\\],]","")

すべての角括弧とコンマが削除された文字列を返します

于 2012-08-09T19:45:08.983 に答える
2

テストのように同等性をチェックしている場合は、代わりにこれを行う必要があります。

System.out.println(ImmutableMultiSet.of("Hello").equals(map.keys()))

ImmutableMultiSet には .equals の正しい実装があるため、マップが null である以外に考えられるすべてのケースに対処する必要があります。


すべての要素を含む String が必要な場合は、代わりに Joiner を使用します。

System.out.println(Joiner.on(",").join(map.keys()))

コレクションをフォーマットするさまざまな方法について、Joiner にはさらに多くのオプションがあります。

于 2012-08-09T22:28:37.230 に答える
1

文字列内の括弧を置き換えるか、キー セットを反復処理して各コンポーネントを個別に出力することができます。

 ImmutableMultiset<Something> keys = map.keys();
 for(Something key : keys){
    System.out.print(key);
 }

あなたが望むあなたの条件のために

if(map.keys().contains("Hello"))
于 2012-08-09T19:38:24.677 に答える