nadineDinDin:
私が持っているMap<String,Map<String,String>>
私はすべてのキーと値を小文字したい場所を。次のコードでは、私はそうすることができるよしかし、私のデータの構造が変化します。私は、おそらくこれをどのように修正することができますか?
for (Map.Entry<String, Map<String, String>> t : list.entrySet()) {
for (Map.Entry<String, String> e : t.getValue().entrySet()) {
lowerCaseList1.put(t.getKey().toLowerCase().trim(), lowerCaseList2.put(e.getValue().toLowerCase().trim(), e.getKey().toLowerCase().trim()));
}
}
アンドレアス:
内のすべての3つの文字列を変換するにはMap<String,Map<String,String>>
大文字に1を、新しいマップを作成します。
Map<String,Map<String,String>> input = Map.of("abc", Map.of("Def", "Ghi"),
"jkl", Map.of("MNO", "PQR", "stu", "vwx"));
Map<String,Map<String,String>> output = input.entrySet().stream()
.collect(Collectors.toMap(
e1 -> e1.getKey().toUpperCase(),
e1 -> e1.getValue().entrySet().stream().collect(Collectors.toMap(
e2 -> e2.getKey().toUpperCase(),
e2 -> e2.getValue().toUpperCase()))));
System.out.println(input);
System.out.println(output);
出力
{abc={Def=Ghi}, jkl={stu=vwx, MNO=PQR}}
{ABC={DEF=GHI}, JKL={STU=VWX, MNO=PQR}}
注:コードがで失敗しますIllegalStateException: Duplicate key
大文字ときと同じになります2つのキーが存在する場合。
Map<String,Map<String,String>> input = Map.of("aaa", Map.of("bbb", "ccc", "Bbb", "Ccc"));
出力
java.lang.IllegalStateException: Duplicate key BBB (attempted merging values CCC and CCC)
1)質問はもともと大文字を求めたが、以来、小文字を求めるために変更されました。それはケースを変更する方法を示す目的のために本当に問題ではないことから、そのまま答えを残します。