Я использую HashMap
для хранения списка тегов, которые требуются в определенном сообщении, для нескольких сообщений, то есть HashMap<String,ArrayList<TagObject>>
.У каждого TagObject
есть атрибуты, основной из которых - является ли этот тег обязательным или нет в определенном сообщении.Теперь, если тег требуется в одном сообщении, а не в другом, окончательное требуемое значение заканчивается тем, которое было обработано последним.Я также создаю HashMap<String,TagObject>
для хранения всех обработанных тегов.Может быть, это является причиной проблемы?Я думаю, что проблема заключается в том, что одна и та же переменная неоднократно переопределяется, как мне сделать отдельные копии для каждого сообщения для хранения в основной HashMap сообщений?
Я посмотрел HashMap, переопределенный последним значением , но я создаю новое поле каждый раз, так что это не является причиной.
for(TagObject o:allTags) {
if(o instanceof Field){
fieldResult=new Field();
Field field = (Field) o;
String required=field.getRequired(); //this is the value found in the file where the specifications are, ie whether the field should be required or no in this message. this value is received correctly
if(required == null || required.equalsIgnoreCase("yes")) {
required="true";
}else{
required="false";
}
else {
fieldResult=ctd.searchFieldMap(field.name); //find the already created Field object
fieldResult.setRequired(required); //set the required now as got from the specifications
}
fieldsInMessage.add(fieldResult); //add this field to list of fields to be there in the message
//while being added, I can see the value of the required tag go as in the specs, however when I later print the hashmap of all messages, the tag which was required in one message, but set as not required in another, has changed value to the value of required of the last appearance of the field in the specifications
}
}
Я надеялся, что для каждого сообщения будет создана новая копия поля, но похоже, что один и тот же объект используется во всех.Как убедиться, что каждое сообщение может иметь отдельную копию тега и, следовательно, уникальные атрибуты?