为什么将HashMap字符串值转换为大写



我已经声明了如下的Map,

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

如果我添加以下条目;

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

它按预期工作,但当我在循环中获取"username"键的值时,

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
}

它将其返回为"BATMAN",全部大写。为什么会发生这种情况,我如何才能保留它的确切格式?

%S格式占位符将输入参数大写。

大写的结果只是控制台中显示的打印结果,其值是原始值。

使用

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

来自文档:

由大写字符(即"B"、"H"、"S"、"C"、"X"、"e"、"G"、"A"one_answers"T")表示的转换与对应的小写转换字符的转换相同,只是结果转换为大写

(强调矿)

您使用%S,因此它会转换为大写。

最新更新