如何将关联值添加到已有键的地图中?

How can I add an associated value to a map that already has a key?

我有一个 Map<Character, String>,它已经根据 for 循环获取了键(字符)的值。我现在如何通过这个地图并检查某个键是否在这个地图中(例如 'A' 或 'a' [因为忽略大小写]),然后将我想要的值(例如 4)添加到这个键(所以从“A=”变成“A=4”)?

我希望我的问题很清楚

这是我现在的代码:

public static Map<Character, String> replacings(String s) {
    Map<Character, String> leetMap = new TreeMap<>();
    for(int i = 1; i < s.length(); i++) {
        if(s.charAt(i) == '=') {
            leetMap.put(s.charAt(i - 1), "");
            leetMap.put(s.toLowerCase().charAt(i - 1), "");
        }
    }
    for(int j = 0; j < leetMap.size(); j++) {
        //look for the key here and then add a value to it [my problem]
    }
    return leetMap;
}

我的主要方法(示例):

Map<Character, String> mappings = replacings(
    "A=4,B=8,E=3,G=6,L=1,O=0,S=5,T=7,Z=2,"
);

所以现在,我想将数字添加到键中。

您可以像这样使用 entrySet 遍历地图:

for(Map.Entry<Character, String> entry : leetMap.entrySet()) {
   if(e.getKey() == 'A') {
     //things
   }
}

但真正的问题是为什么您希望这发生在不同的循环中?为什么在添加key的时候不把value同时添加到map中?

我的尝试是这样的:

private static Map<Character, String> replacings(String s) {
  Map<Character, String> leetMap = new TreeMap<>();
  String[] splitted = s.split(",");
  for (String kv : splitted) {
    String[] kvsplit = kv.split("=");
    leetMap.put(kvsplit[0].charAt(0), kvsplit[1]);
    leetMap.put(kvsplit[0].toLowerCase().charAt(0), kvsplit[1]);
  }
  return leetMap;
}

这会打印:

{A=4, B=8, E=3, G=6, L=1, O=0, S=5, T=7, Z=2, a=4, b=8, e=3, g=6, l=1, o=0, s=5, t=7, z=2}