Я пытаюсь пройти некоторые данные excel2007 с помощью poi.jar на основе jdk1.6. Но когда мне кажется странным явлением, что когда я пересекаю строку (хранится по HashMap()), а затем добавить данные строки в java.util. ArrayList.Map.clear() а затем добавьте карту в список
И, начиная с следующего итератора, я сначала очищаю данные строки, вызывая Map.clear(), но при повторном вызове метода ArrayList.add() данные этой строки переопределяют старые данные.
Map<String, String> cellForRow = = new HashMap<String, String>();
List<Map<String, String>> rowForSheet = new ArrayList<Map<String, String>>();
for (int j = 0; j < sheet.getPhysicalNumberOfRows(); j++) {
row = sheet.getRow(j);
if (j == 0) {// the first row is title
titleRow = row;
continue;
}
if (row != null && titleRow.getPhysicalNumberOfCells() > 0) {
// cellForRow = new HashMap<String, String>();
cellForRow.clear();
for (int k = 0; k < titleRow.getPhysicalNumberOfCells(); k++) {// cell
cellForRow.put(getCellValue(titleRow.getCell(k)), getCellValue(row.getCell(k)));
}
}
rowForSheet.add(cellForRow);
}
Следующая Отрывки показать журнал отладки для rowForSheet (Список)
[{ Up =Stream, Email=XXX,Down =Stream},
{ Up =Stream, Email=XXX,Down =Stream},
{ Up =Stream, Email=XXX,Down =Stream},
{ Up =Stream, Email=XXX,Down =Stream},
{ Up =Stream, Email=XXX,Down =Stream}]
поздние данные переопределения старые данные
не так ли?
Почему бы вам не добавить столько карт повторно в свой список? – matt
Вы что? Пожалуйста, закончите свои предложения –