java - 为什么这张地图中的旧数据被删除了?
问题描述
我有这个代码。所以,我不明白为什么要删除哈希图中的旧数据 - 在 result.put(name, localMap)
class FilterServers {
// In this class, we filter our servers on our key word
static Map <String, Map <String, String>>
getValues(String keyWord, List <Map <String, Map <String, Monitor.Status>>> servers) {
Map <String, Map <String, String>> result = new ConcurrentHashMap<>();
Pattern pattern = Pattern.compile(keyWord, Pattern.CASE_INSENSITIVE);
Matcher keyMatcher;
Matcher valueMatcher;
for (Map <String, Map<String, Monitor.Status>> server : servers) {
Map <String, String> localMap = new ConcurrentHashMap<>();
boolean haveResult = false;
Set <String> serverName = server.keySet();
Optional <String> optional = serverName.stream().findAny();
String name = optional.get();
for (Map <String, Monitor.Status> subServer : server.values()) {
for (Map.Entry<String, Monitor.Status> entry: subServer.entrySet()) {
Monitor.Status targetValue = entry.getValue();
String targetKey = entry.getKey();
keyMatcher = pattern.matcher(targetKey);
valueMatcher = pattern.matcher(targetValue.getProblem());
if (keyMatcher.find() || valueMatcher.find()) {
localMap.put(targetKey, targetValue.getProblem());
haveResult = true;
}
}
}
if(haveResult){
result.put(name, localMap);
}
}
return result;
}
}
解决方案
我发现键(名称)中出现了相同的字符串。而且由于哈希映射会摩擦已经具有相同键的旧值,因此它们被我删除了。我只是交换了键和值
推荐阅读
- linux - 在字符串中使用自定义命令
- docker - Docker exec pipe 没有这样的文件或目录
- python - 将整数转换为浮点数
- python - 查找字典键是否包含 Python 中的项目
- java - 如何使用改造获取数据
- python-c-api - GMPy - python C-api中的类型检查
- c# - 如何在 ASP.Net core 2 中使用 AutoMapper 将模型对象实际映射到 ViewModel 对象?
- mule - Dataweave 2 - 按行输出多个 JSON
- c# - How can I "expand" IQueryable results based on a range of values?
- r - 为 Arima 模型添加漂移时出现错误消息