Excelファイルからデータを読み取り、mysqlのテーブルに保存するプログラムを作成できました。私のプログラムは、各ファイルの最初の行を読み取り、テーブルのフィールドを作成し、残りのデータを各列の値として保存します。それがプログラムで発生するという理由だけで、LinkedHashMap を使用してすべての値を読み取ることにしました。すべて正常に動作します。しかし、プログラムを終了してテストすると、コンソールにエラーが表示されます。マップに以前にキーのマッピングが含まれていた場合、古い値が指定された値に置き換えられるため、エラーは LinkedHashMap によるものです。
データを解析するためのコードは次のとおりです。
private static List<TableRow> parseExcelColumnData(List sheetData) {
// read each row from 1 to the last
ArrayList<TableRow> tousRows = new ArrayList<TableRow>();
for (int rowCounter = 1; rowCounter < sheetData.size(); rowCounter++) {
List list = (List) sheetData.get(rowCounter);
LinkedHashMap<String, Integer> tableFields = new LinkedHashMap(list
.size());
String str;
String[] tousFields = new String[list.size()];
int i = 0;
Cell cell = (Cell) list.get(0); // get the first column
long currentID = (long) cell.getNumericCellValue();
for (int j = 0; j < list.size(); j++) { //get the rest
cell = (Cell) list.get(j);
if (cell != null) {
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
...
...............
}
}
}
tousRows.add(new TableRow(currentID, tableFields));
}
return tousRows;
}
古い値を置き換えないように、「tableFields」をArrayListにする方法を教えてください。