gpt4 book ai didi

java - HashMap.containsKey(Object key) 找不到键

转载 作者:行者123 更新时间:2023-12-04 06:50:25 26 4
gpt4 key购买 nike

当然我做错了什么,但无法意识到什么:)
在尝试以常用方式检查特定键的集合是否存在 keyValuePairs.containsKey("Name") 并返回“false”后,我使用数据填充键/值对集合 Map keyValuePairs。但是 keyValuePairs.keySet() 会返回存在“Name”的键集。

public static void parseBusinessObject(String input, Object output) {

Class parsingObject = output.getClass();
Field[] fields = parsingObject.getDeclaredFields();

Pattern pattern = Pattern.compile("([^{=;]*)=([^;}]*);");
Matcher matcher = pattern.matcher(/*input*/"anyType{Id=1; Name=Til afskrivning; LocationId=1; Editable=true; Default=true; Transcribed=false; }");
Map<String, String> keyValuePairs = new HashMap<String, String>();
while (matcher.find()) {
if(!keyValuePairs.containsKey(matcher.group(1))){
keyValuePairs.put(matcher.group(1).trim(), matcher.group(2).trim());
}
}

for (Field field : fields) {
if(keyValuePairs.containsKey(field.getName())){
//TODO: add values to fields
}
}
}

匹配后输出结果:
 Id=1;
Name=Til afskrivning;
LocationId=1;
Editable=true;
Default=true;
Transcribed=false;

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

"keyValuePairs.keySet()"= HashMap$1 (id=830062763448)
[ LocationId, Default, Editable, Name, Id, Transcribed]

"keyValuePairs.containsKey("Name")"= false



任何人都可以请解释我有什么问题吗?谢谢你。

最佳答案

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

"keyValuePairs.keySet()"= HashMap$1  (id=830062763448)  
[ LocationId, Default, Editable, Name, Id, Transcribed]

一些键名前面的额外空格表明插入的键是 " Name" (注意前面的空格)。如果您提供有关正则表达式的更多信息,我们或许能够找出发生这种情况的原因。

您也可以通过记录/打印 group(1) 来自行调试。和 group(2)火柴;我相信你会发现它匹配额外的空格。

一个快速的解决办法是把 group(1).trim()group(2).trim()改为进入 map ,但更好的选择是修复正则表达式。

关于java - HashMap.containsKey(Object key) 找不到键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com