jdk1.6に基づいてpoi.jarを使用していくつかのexcel2007データをトラバースしようとしていますが、私が行をトラバースしたときに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
あなたは何でしたか?あなたの文章を終了してください。 –