Bien sûr, je fais quelque chose de mal, mais je ne peux pas réaliser ce que :) Je remplis une paire de clé/valeur collection KeyValuePairs avec des données, après que j'essaie de vérifier la collection pour l'existence de la clé spécifique d'une manière commune keyValuePairs.containsKey ("Nom") et revenir "faux". Mais keyValuePairs.keySet() renvoie un ensemble de clés où "Name" existe.HashMap.containsKey (clé d'objet) ne peut pas trouver une clé
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
}
}
}
résultat de sortie après l'appariement:
Id=1;
Name=Til afskrivning;
LocationId=1;
Editable=true;
Default=true;
Transcribed=false;
"keyValuePairs" = HashMap (id = 830062742672) {LocationID = 1, valeur par défaut = true, modifiable = true, Name = Til afskrivning, Id = 1, Transcrit = false}
"keyValuePairs.keySet()" = HashMap 1 $ (id = 830062763448)
[LocationID, par défaut, éditable, Nom, Id, Transcrit]"keyValuePairs.containsKey (" Name ")" = false
Quelqu'un pourrait s'il vous plaît me expliquer ce qui ne va pas avec elle? Je vous remercie.
Etes-vous sûr que votre clé est "Nom", et non "Nom" ou "Nom" ou même "\ tNom"? – Riduidel
Peut-être souhaitez-vous inclure la regex que vous utilisez et les données sources, ce qui vous aiderait à répondre à la question de @ Riduidel – andersoj
Pouvons-nous obtenir un pic à votre matcher regex? Il se pourrait facilement que vous ne correspondiez pas à quelque chose. C'est généralement une bonne idée de normaliser les clés String avant de faire un .put (...) quand même. –