У меня есть отладки выходов в конструктор, который все выходные данные, как и ожидалосьпотери данных из класса во для каждой итерации
Входящий Параметр {C = 0,620405, Н = 0,104122, O = 0,275473} Сохраненный
Параметр {C = 0,620405, H = 0,104122, O = 0,275473}
Но когда я называю ToString() в то время как переборе списка он возвращает пустой набор.
В чем причина этого поведения?
public class PNNLEntry {
private String matNum = "";
private String material = "";
private String formula = "";
private String density = "";
private String comment = "";
private String references = "";
//Map element to weight fraction as string
private Map<String, String> elements = new TreeMap<String, String>();
public PNNLEntry(){
}
public PNNLEntry(String num, String mat, String form, String dens,
String com, String ref, Map<String, String> elem){
matNum = num;
material = mat;
formula = form;
density = dens;
comment = com;
references = ref;
elements = elem;
System.out.println("Incoming Parameter" + elem.toString());
System.out.println("Stored Parameter" + elements.toString());
System.out.println(this.toString());
}
@Override
public String toString(){
String buff = "\n";
buff += matNum;
buff += ") " + material;
buff += "\t" + formula;
buff += "\n" + density;
buff += "\n" + comment;
buff += "\n" + elements.toString();
buff += "\n" + references;
return buff;
}
}
Из структур:
private static PNNLEntry entry = new PNNLEntry();
private static List<PNNLEntry> outlist = new ArrayList<PNNLEntry>();
Пример вывода кода
System.out.println("ELEMENTS \t " + elements.toString());
entry = new PNNLEntry(matNum, material, formula, density,
comment, references, elements);
System.out.println(entry.toString());
outlist.add(entry);
//clear map for next element
elements.clear();
...
for(PNNLEntry output : outlist){
System.out.println(output);
System.out.println(output.getElements().toString());
}
Выходы:
элементов {C = 0,775501, Ca = 0,018378, F = 0,017422, H = 0,101327, N = 0,035057, O = 0,052316} Входящий параметр ter {C = 0,775501, Ca = 0,0175378, F = 0,017422, H = 0,101327, N = 0,035057, O = 0,052316} Хранилище Параметр {C = 0,775501, Ca = 0,018378, F = 0,017422, H = 0,101327, N = 0,035057 , O = 0,052316}
1) А-150 Ткань-эквивалентная пластическая (A150TEP) - 1,127000 выше плотность, по оценкам, с точностью до 4 значащих цифр. Неопределенности не рассматриваются. Следующие данные были рассчитаны из входных весов фракций {C = 0,775501, Са = 0.018378, F = 0,017422, H = 0,101327, N = 0.035057, O = 0,052316} Плотность и весовые фракции от http://physics.nist.gov/cgi-bin/Star/compos.pl?matno=099 (NIST 1998).
...
1) А-150 Ткань-эквивалентная пластическая (A150TEP) -
1,127000 выше плотность, по оценкам, с точностью до 4 значащих цифр. Неопределенности не рассматриваются. Следующие данные были рассчитаны из входных весовых фракций {} Плотность и весовые доли от http://physics.nist.gov/cgi-bin/Star/compos.pl?matno=099 (NIST 1998).
Таким образом, единственными потерянными данными являются данные карты, которые были переданы.
Мое лучшее предположение в настоящее время - проблема сглаживания при очистке карты после ее передачи конструктору класса, но я не уверен, что это так или как ее лучше разрешить.
Это то, чего я ожидал, был виновником, но получение этого подробного ответа действительно дает мне понимание происходящего. Однако сброс состояния карты необходим, поскольку цикл заполняет карту, которая передается объекту. Существует 300 таких карт, которые генерируются и передаются, поэтому вопрос о ссылке очень важен для ознакомления. Большое спасибо. –