微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何向已有键的映射添加关联值?

如何解决如何向已有键的映射添加关联值?

我有一个 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
   }
}

但真正的问题是你为什么希望这发生在不同的循环中?为什么在添加键的同时不将值添加到地图中?

我的尝试是这样的:

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}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。