Конечно, я делаю что-то не так, но не могу понять, что :)
Я заполняю коллекцию пары ключ / значение Map keyValuePairs данными, после того как я пытаюсь проверить коллекцию на предмет наличия конкретного ключа обычным способом keyValuePairs.containsKey ("Name") и возвращаю "false". Но keyValuePairs.keySet () возвращает набор ключей, в которых существует «Имя».
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, по умолчанию = true, редактируемый = true, имя = до открытия, Id = 1, транскрибировано = false}
"keyValuePairs.keySet ()" = HashMap $ 1 (id = 830062763448)
[LocationId, по умолчанию, редактируемый, имя, идентификатор, транскрибированный]
"keyValuePairs.containsKey (" Name ")" = false
Может кто-нибудь объяснить, что с ним не так? Спасибо.