Java containsKey(对象键)可以';我找不到钥匙

Java containsKey(对象键)可以';我找不到钥匙,java,collections,Java,Collections,当然我做错了什么,但我不知道是什么:) 在我尝试以常见的方式检查集合中是否存在特定的键之后,我用数据填充键/值对集合映射keyValuePairs。containsKey(“名称”)并返回“false”。但是keyValuePairs.keySet()返回存在“Name”的一组键 “keyValuePairs”=HashMap(id=830062742672) {LocationId=1,Default=true,Editable=true,Name=Til-afskriving,Id=1,Tr

当然我做错了什么,但我不知道是什么:) 在我尝试以常见的方式检查集合中是否存在特定的键之后,我用数据填充键/值对集合映射keyValuePairs。containsKey(“名称”)并返回“false”。但是keyValuePairs.keySet()返回存在“Name”的一组键

“keyValuePairs”=HashMap(id=830062742672) {LocationId=1,Default=true,Editable=true,Name=Til-afskriving,Id=1,Transcribed=false}

“keyValuePairs.keySet()”=HashMap$1(id=830062763448)
[位置Id,默认,可编辑,名称,Id,转录]

“keyValuePairs.containsKey(“名称”)”=false


谁能给我解释一下有什么问题吗?谢谢。

引用您在问题中提供的信息:

"keyValuePairs.keySet()"= HashMap$1  (id=830062763448)  
[ LocationId,  Default,  Editable,  Name, Id,  Transcribed]
某些键名前面的额外空格表示插入的键是
“Name”
(请注意前面的空格)。如果您提供有关正则表达式的更多信息,我们可能会找出发生这种情况的原因

您还可以通过记录/打印
组(1)
组(2)
匹配的内容来自行调试;我相信您会发现它与额外的空格相匹配


快速修复方法是将
group(1).trim()
group(2).trim()
放在映射中,但更好的选择是修复正则表达式。

您确定您的键是“Name”,而不是“Name”或“Name”甚至“\tName”?可能希望包括您正在使用的正则表达式和源数据,这将有助于回答@Riduidel的问题我们能在你的matcher正则表达式中得到一个峰值吗?很可能是你错配了什么。通常在执行.put(…)之前规范化字符串键是一个好主意。我猜正则表达式类似于
([^=]*)=(…)
。解决方法可能是在第一组前面添加
\s*
。@Maxim:如果您提供足够的信息,我可能会说服您使用
扫描仪。或者其他一些处理键/值对的专门库,
java.util.Properties
et.al.Question被编辑,似乎添加了所有内容,这是解析soap响应的每个属性的非常简单的方法。@Maxim:我没有使用soap的经验,但请检查
 Id=1;
 Name=Til afskrivning;
 LocationId=1;
 Editable=true;
 Default=true;
 Transcribed=false;
"keyValuePairs.keySet()"= HashMap$1  (id=830062763448)  
[ LocationId,  Default,  Editable,  Name, Id,  Transcribed]