2017-11-01 5 views
0

私は以下のように地図を宣言している、私は次のエントリを追加した場合なぜHashMapの文字列値が大文字に変換されるのですか?

private Map<String, String> mUnsavedFields = new HashMap<>(); 

mUnsavedFields.put("username", "Batman"); 

それは「BATMAN」すべて大文字としてそれを返す期待どおりに動作しますが、私は、ループ内の「ユーザ名」キーで値を取得するために行くとき、

Iterator it = mUnsavedFields.entrySet().iterator(); 
while (it.hasNext()) { 
    Map.Entry pair = (Map.Entry)it.next(); 
    Timber.d("Key(%s), Value(%S)", pair.getKey(), pair.getValue()); 
    it.remove(); // avoids a ConcurrentModificationException 
} 

。なぜこれが起こっているのですか、どのように正確な書式設定を保持できますか?

+3

[最小限で完全で検証可能な例を作成する方法] –

+7

他の値を変更している可能性があります。 –

+4

コレクションは、自分で入れたものを変更しません。それはばかげているでしょう。 – Kayaman

答えて

6

%Sフォーマットのプレースホルダは入力引数をキャプチャします。

キャプチャ結果は、コンソールに表示された印刷のみです。値は元の値です。 the documentationから

使用

"Key(%s), Value(%s)" 
+0

うわー、どんなことが間違っているのか、うれしいよ、仲間たち、すべてソートされた;) – CaptRisky

6

:大文字の文字(すなわち、 'B'、 'H'、 'S'、 'C​​'、 'X' で表さ

コンバージョン結果は大文字に変換されていることを、「E」、「G」、「A」と「T」)を除いて、対応する小文字のもの変換文字と同じである

(emphasis mine)

%Sを使用しているため、大文字に変換されます。

+0

あなたの助けを歓迎する – CaptRisky

関連する問題