问题描述
我有一个 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}